1:最近做一个双目测距小项目,需要通过对双目摄像头采集左右标定板图像,然后用matlab进行标定。下面是利用python代码对双目摄像头所拍摄的图片进行分割。
2:左右摄像机总分辨率1280x480;分割为左相机640x480、右相机640x480。
2.1首先设置双目的宽度和高度
cap = cv2.VideoCapture(1 + cv2.CAP_DSHOW) # 电脑设置0,双目设置1
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1280) # 设置双目的宽度
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480) # 设置双目的高度
2.2读取每帧图像判断
i=0
while True:
ret, frame = cap.read()
if not ret:
print("camera is not connected!")
break
2.3分割左右图像
#裁剪坐标为[y0:y1, x0:x1] HEIGHT * WIDTH
left_frame = frame[0:480, 0:640]
right_frame = frame[0:480, 640:1280]
2.4设置保存的图像张数,在项目目录下,建立两个文件夹,left和right.
k=cv2.waitKey(1)
if k==27:
break
elif k==ord('s'):
cv2.imwrite('D:/Develop/python_work2/pythonProject/2m/right/'+'right_'+str(i)+'.jpg',left_frame)
cv2.imwrite('D:/Develop/python_work2/pythonProject/2m/left/'+'left_'+str(i)+'.jpg',right_frame)
i+=1
cv2.imshow('left',left_frame)
cv2.imshow('right',right_frame)
if cv2.waitKey(1)&0xFF ==ord('q'):
break
left_frame.release()
right_frame.release()
cv2.destoryAllWindows()
3 保存操作,左右图像显示出来后,点击左右图像,按下s键即可自动保存。q退出。注意按键时,输入法要是英文。同时鼠标按键在图像上。最终得到左右图像。
4附完整代码:
import cv2
cap = cv2.VideoCapture(1 + cv2.CAP_DSHOW) #电脑设置0,双目设置1
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1280) # 设置双目的宽度
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480) # 设置双目的高度
i=0
while True:
ret, frame = cap.read()
if not ret:
print("camera is not connected!")
break
left_frame = frame[0:480, 0:640]
right_frame = frame[0:480, 640:1280]
k=cv2.waitKey(1)
if k==27:
break
elif k==ord('s'):
cv2.imwrite('D:/Develop/python_work2/pythonProject/2m/right/'+'right_'+str(i)+'.jpg',left_frame)
cv2.imwrite('D:/Develop/python_work2/pythonProject/2m/left/'+'left_'+str(i)+'.jpg',right_frame)
i+=1
cv2.imshow('left',left_frame)
cv2.imshow('right',right_frame)
if cv2.waitKey(1)&0xFF ==ord('q'):
break
left_frame.release()
right_frame.release()
cv2.destoryAllWindows()