Con*_*mer 5 opencv numpy python-2.7
我打算从教程here做一个立体图像,但是编译器报告错误cv2.createStereoBM,我发现这是OpenCV版本的问题。
我跟着这个改变cv2.createStereoBM成cv2.StereoBM。它运行良好,但以下代码:
disparity = stereo.compute(frame0,frame1)
Run Code Online (Sandbox Code Playgroud)
显示错误:
两个输入图像在函数 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)
Run Code Online (Sandbox Code Playgroud)
您应该使用转换为单通道的帧,即类型CV_8UC1:
disparity = stereo.compute(frame0_new, frame1_new)
Run Code Online (Sandbox Code Playgroud)