RUVIDEO
Поделитесь видео 🙏

OpenCV(Python)プログラミング(12/12) カメラキャリブレーション

WindowsのVisual Studio CodeのPythonを利用したOpenCVプログラミング講習

import numpy as np
import cv2
def main():
input=[]
input.append(cv2.imread('image1.jpg',cv2.IMREAD_COLOR))
input.append(cv2.imread('image2.jpg',cv2.IMREAD_COLOR))
if input[0] is None or input[1] is None:
print('Cannot open file')
return
output=[input[0].copy(),input[1].copy()]
rows,cols,_=input[0].shape
list3d=[]
list2d=[]
item3d=[]
item2d=[]
item3d.append([1,0,0])
item2d.append([234,306])
item3d.append([0,1,0])
item2d.append([448,265])
item3d.append([0,0,1])
item2d.append([320,90])
item3d.append([1,1,0])
item2d.append([391,370])
item3d.append([0,1,1])
item2d.append([475,121])
item3d.append([1,0,1])
item2d.append([225,147])
item3d.append([1,1,1])
item2d.append([413,196])
list3d.append(item3d)
list2d.append(item2d)
item3d=[]
item2d=[]
item3d.append([1,0,0])
item2d.append([174,249])
item3d.append([0,1,0])
item2d.append([384,276])
item3d.append([0,0,1])
item2d.append([298,69])
item3d.append([1,1,0])
item2d.append([244,359])
item3d.append([0,1,1])
item2d.append([404,154])
item3d.append([1,0,1])
item2d.append([138,125])
item3d.append([1,1,1])
item2d.append([226,239])
list3d.append(item3d)
list2d.append(item2d)
list3d=np.array(list3d,dtype=np.float32)
list2d=np.array(list2d,dtype=np.float32)
intrinsic=np.array([
[1000,0,cols/2],
[0,1000,rows/2],
[0,0,1]
],dtype=np.float64)
dist=np.zeros((1,4),dtype=np.float64)
_,intrinsic,dist,vecr,vect=cv2.calibrateCamera(
list3d,list2d,(cols,rows),intrinsic,dist,
flags=
cv2.CALIB_USE_INTRINSIC_GUESS|
cv2.CALIB_FIX_PRINCIPAL_POINT|
cv2.CALIB_FIX_ASPECT_RATIO|
cv2.CALIB_ZERO_TANGENT_DIST|
cv2.CALIB_FIX_K1|
cv2.CALIB_FIX_K2|
cv2.CALIB_FIX_K3|
cv2.CALIB_FIX_K4|
cv2.CALIB_FIX_K5|
cv2.CALIB_FIX_K6)
print('カメラ内部行列')
print(intrinsic)
print('平行移動ベクトル')
print(vect[0])
print(vect[1])
print('回転行列')
matr=[cv2.Rodrigues(vecr[0])[0],cv2.Rodrigues(vecr[1])[0]]
print(matr[0])
print(matr[1])
for c in range(0,2):
for i in [-1,0,1,2]:
point=[]
point.append(np.array([[-1],[i],[0]],dtype=np.float64))
point.append(np.array([[2],[i],[0]],dtype=np.float64))
point.append(np.array([[i],[-1],[0]],dtype=np.float64))
point.append(np.array([[i],[2],[0]],dtype=np.float64))
point=[intrinsic@(matr[c]@p+vect[c]) for p in point]
point=[[int(p[0,0]/p[2,0]),int(p[1,0]/p[2,0])] for p in point]
cv2.line(output[c],point[0],point[1],(0,0,255),
thickness=3,lineType=cv2.LINE_AA)
cv2.line(output[c],point[2],point[3],(0,0,255),
thickness=3,lineType=cv2.LINE_AA)
cv2.imwrite('output1.jpg',output[0])
cv2.imwrite('output2.jpg',output[1])
if __name__=='__main__':
main()

Что делает видео по-настоящему запоминающимся? Наверное, та самая атмосфера, которая заставляет забыть о времени. Когда вы заходите на RUVIDEO, чтобы посмотреть онлайн «OpenCV(Python)プログラミング(12/12) カメラキャリブレーション», вы рассчитываете на нечто большее, чем просто загрузку плеера. И мы это понимаем. Контент такого уровня заслуживает того, чтобы его смотрели в HD 1080, без дрожания картинки и бесконечного буферизации.

Честно говоря, Rutube сегодня — это кладезь уникальных находок, которые часто теряются в общем шуме. Мы же вытаскиваем на поверхность самое интересное. Будь то динамичный экшн, глубокий разбор темы от любимого автора или просто уютное видео для настроения — всё это доступно здесь бесплатно и без лишних формальностей. Никаких «заполните анкету, чтобы продолжить». Только вы, ваш экран и качественный поток.

Если вас зацепило это видео, не забудьте взглянуть на похожие материалы в блоке справа. Мы откалибровали наши алгоритмы так, чтобы они подбирали контент не просто «по тегам», а по настроению и смыслу. Ведь в конечном итоге, онлайн-кинотеатр — это не склад файлов, а место, где каждый вечер можно найти свою историю. Приятного вам отдыха на RUVIDEO!

Видео взято из открытых источников Rutube. Если вы правообладатель, обратитесь к первоисточнику.