码迷,mamicode.com
首页 > 其他好文 > 详细

error: (-215:Assertion failed) (depth == CV_8U || depth == CV_32F) && _img.dims() <= 2 in function 'cv::matchTemplate'等opencv踩过的坑

时间:2020-05-25 22:27:31      阅读:456      评论:0      收藏:0      [点我收藏+]

标签:cte   exp   open   func   dep   pack   报错   mat   type   

第一种报错:error: (-215:Assertion failed) (depth == CV_8U || depth == CV_32F) && type == _templ.type() && _img.dims() <= 2 in function ‘cv::matchTemplate‘

出现在使用matchTemplate()时,比如:

cv.matchTemplate(roi,digitROI,cv.TM_CCOEFF)

解决方法修改模板图片为RGB,如下

digitROI = cv.cvtColor(digitROI, cv.COLOR_BGR2RGB)

再次运行,程序不再报错可以成功运行,实测只有模板图像需要修改,roi图像不需要改变也可以

 

第二种错误:ValueError: not enough values to unpack (expected 3, got 2)

技术图片

 

 错误原因是opencv4.0以上的版本中findcontours函数将不会再返回3个参数,而只返回contours和hierarchy两个返回值

解决,去掉一个返回值就可以了,或者将你的opencv版本号降下去

contours , hierarchy = cv.findContours(group,cv.RETR_EXTERNAL,cv.CHAIN_APPROX_SIMPLE)

第三种错误:error: (-215:Assertion failed) size.width>0 && size.height>0 in function ‘cv::imshow‘

这种错误一般就是你的图片路径错误,或者图片格式错误,还有   别用中文命名,不然也会报这个错误

 

第四个坑:使用sobel算子一定别忘了做绝对值处理和归一化,不然结果相差甚远

比如左图是未做绝对值处理和归一化,右图是做了的,最下面的图是只做归一化未做绝对值

技术图片技术图片

技术图片

 

 做法

gradX = cv.Sobel(tophat,cv.CV_32F,dx=1,dy=0,ksize=-1)
gradX = np.absolute(gradX)
(minVal, maxVal) = (np.min(gradX), np.max(gradX))
gradX = (255 * ((gradX - minVal) / (maxVal - minVal)))
gradX = gradX.astype("uint8")
cvshow(gradX)

 

error: (-215:Assertion failed) (depth == CV_8U || depth == CV_32F) && _img.dims() <= 2 in function 'cv::matchTemplate'等opencv踩过的坑

标签:cte   exp   open   func   dep   pack   报错   mat   type   

原文地址:https://www.cnblogs.com/Truedragon/p/12961022.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!