Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 两个输入图像都必须有CV_8UC1 in功能错误_Python 2.7_Opencv_Numpy - Fatal编程技术网

Python 2.7 两个输入图像都必须有CV_8UC1 in功能错误

Python 2.7 两个输入图像都必须有CV_8UC1 in功能错误,python-2.7,opencv,numpy,Python 2.7,Opencv,Numpy,我计划制作教程中的立体图像,但是编译器报告了cv2.createStereoBM的错误,我发现这是OpenCV版本的问题 我随后将cv2.createStereoBM更改为cv2.StereoBM。它工作正常,但代码如下: disparity = stereo.compute(frame0,frame1) 显示错误: 两个输入图像都必须在函数CV::FindStoreCorrespondenceBM中具有CV_8UC1 有人能帮我吗 环境是Python 2.7、OpenCV 2.4.11 我的

我计划制作教程中的立体图像,但是编译器报告了cv2.createStereoBM的错误,我发现这是OpenCV版本的问题

我随后将
cv2.createStereoBM
更改为
cv2.StereoBM
。它工作正常,但代码如下:

disparity = stereo.compute(frame0,frame1)
显示错误:

两个输入图像都必须在函数CV::FindStoreCorrespondenceBM中具有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)

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

disparity = stereo.compute(frame0_new, frame1_new)

非常感谢你!我犯了太愚蠢的错误!顺便说一句,CV_8UC1是图像类型的名称?CV_C它是一个OpenCV标志,用于描述矩阵类型、通道等。。。CV_8UC1只是uint8(或uchar)的单通道矩阵,非常感谢您的解释。等等,frame0_new和frame1_new是从哪里来的?@ComputerScientist再次检查问题,它被OP编辑掉了。