两个输入图像都必须在函数'cv :: StereoBMImpl :: compute'中具有CV_8UC1

时间:2019-04-18 06:40:56

标签: python opencv stereo-3d

我正在通过wifi从无人机摄像头捕获图像。以下是我在Python中使用OpenCV函数的代码(其他OpenCV任务在相同的输入图像下也可以正常工作),并且出现错误

Both input images must have CV_8UC1 in function 'cv::StereoBMImpl::compute'

            if frameno == 1:
                imagen = cv2.cvtColor(numpy.array(frame1.to_image()), cv2.COLOR_RGB2BGR) 
                frameno = frameno+1
                print frameno
            if frameno == 0:
                imageo = cv2.cvtColor(numpy.array(frame1.to_image()), cv2.COLOR_RGB2BGR)
                frameno = frameno+1
                print frameno
            stereo = cv2.StereoBM_create(numDisparities = 16, blockSize = 17)
            disparity = stereo.compute(imagen,imageo)

我在stereo.compute函数中遇到错误。 好吧,我使用相同的frame1.to_image()来生成其他OpenCV函数的输入帧,并且在那儿工作正常,但是当我开始尝试立体声视差代码时,它正在生成错误,我不知道为什么。我在这里看到另一个线程 CV_8U1 error stackoverflow,但那个人在使用转换后的图像后并没有遇到问题,但是我遇到了错误。请让我知道我应该在这里做什么。

2 个答案:

答案 0 :(得分:0)

仅注意到颜色转换应为COLOR_RGB2GRAY。解决了这个问题。

答案 1 :(得分:0)

对于复制和粘贴:

grayLeft = cv.cvtColor(left, cv.COLOR_BGR2GRAY)
grayRight = cv.cvtColor(right, cv.COLOR_BGR2GRAY)

stereo = cv.StereoBM_create(numDisparities = 16, blockSize = 17)
disparity = stereo.compute(grayLeft, grayRight)

plt.imshow(disparity,'gray')
plt.show()