两个输入图像都必须在函数错误中具有 CV_8UC1

Con*_*mer 5 opencv numpy python-2.7

我打算从教程here做一个立体图像,但是编译器报告错误cv2.createStereoBM,我发现这是OpenCV版本的问题。

我跟着这个改变cv2.createStereoBMcv2.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)

Mik*_*iki 5

您应该使用转换为单通道的帧,即类型CV_8UC1

disparity = stereo.compute(frame0_new, frame1_new)
Run Code Online (Sandbox Code Playgroud)

  • 等等,frame0_new 和frame1_new 从哪里来? (2认同)