Python 2.7 两个输入图像都必须有CV_8UC1 in功能错误
我计划制作教程中的立体图像,但是编译器报告了cv2.createStereoBM的错误,我发现这是OpenCV版本的问题 我随后将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
更改为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编辑掉了。