我打算从教程here做一个立体图像,但编译器报告错误cv2.createStereoBM
,我发现它是OpenCV版本的问题。
我按this将cv2.createStereoBM
更改为cv2.StereoBM
。它运作良好,但以下代码:
disparity = stereo.compute(frame0,frame1)
显示错误:
两个输入图像必须在函数cv :: findStereoCorrespondenceBM中具有CV_8UC1
任何人都可以帮我吗?
环境是Python 2.7,OpenCV 2.4.11。
我的代码是:
cap0 = cv2.VideoCapture(0)
cap1 = cv2.VideoCapture(1)
while (cap0.isOpened() and cap1.isOpened()):
ret0, frame0 = cap0.read()
frame0_new=cv2.cvtColor(frame0, cv2.COLOR_BGR2GRAY)
ret1, frame1 = cap1.read()
frame1_new=cv2.cvtColor(frame1, cv2.COLOR_BGR2GRAY)
stereo = cv2.StereoBM(cv2.STEREO_BM_BASIC_PRESET,ndisparities=16, SADWindowSize=15)
disparity = stereo.compute(frame0,frame1)
答案 0 :(得分:3)
您应该使用转换为单一频道的帧,即类型CV_8UC1
:
disparity = stereo.compute(frame0_new, frame1_new)