原文链接:http://www.juzicode.com/archives/6288
错误提示:
minMaxLoc()计算最值时提示:1495: error: (-215:Assertion failed) (cn == 1 && (_mask.empty() || _mask.type() == CV_8U)) || (cn > 1 && _mask.empty() && !minIdx && !maxIdx) in function ‘cv::minMaxIdx’
#VX公众号:桔子code / juzicode.com
import cv2
print('cv2.__version__:',cv2.__version__)
img = cv2.imread('..\\lena.jpg')
print('img.shape:',img.shape)
ret = cv2.minMaxLoc(img)
print(ret)
==========运行结果:
cv2.__version__: 4.5.2
img.shape: (512, 512, 3)
---------------------------------------------------------------------------
error Traceback (most recent call last)
<ipython-input-1-06c5cfa9e8f6> in <module>
4 img = cv2.imread('..\\lena.jpg')
5 print('img.shape:',img.shape)
----> 6 ret = cv2.minMaxLoc(img)
7 print(ret)
error: OpenCV(4.5.2) C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-kuwfz3h3\opencv\modules\core\src\minmax.cpp:1495: error: (-215:Assertion failed) (cn == 1 && (_mask.empty() || _mask.type() == CV_8U)) || (cn > 1 && _mask.empty() && !minIdx && !maxIdx) in function 'cv::minMaxIdx'
错误原因:
1、minMaxLoc要求输入的图像是单通道图像,可以提取单个通道或者转换为灰度图计算最值
解决方法:
1、多通道图像提取其中一个通道计算最值。
#VX公众号:桔子code / juzicode.com
import cv2
print('cv2.__version__:',cv2.__version__)
img = cv2.imread('..\\lena.jpg')
img = img[:,:,0]
print('img.shape:',img.shape)
ret = cv2.minMaxLoc(img)
print(ret)
==========运行结果:
cv2.__version__: 4.5.2
img.shape: (512, 512)
(27.0, 222.0, (177, 351), (114, 368))
2、转换为灰度图后计算最值。
#VX公众号:桔子code / juzicode.com
import cv2
print('cv2.__version__:',cv2.__version__)
img = cv2.imread('..\\lena.jpg')
img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
print('img.shape:',img.shape)
ret = cv2.minMaxLoc(img)
print(ret)
==========运行结果:
cv2.__version__: 4.5.2
img.shape: (512, 512)
(20.0, 245.0, (265, 198), (117, 272))
扩展内容:
如果本文还没有完全解决你的疑惑,你也可以在微信公众号“桔子code”后台给我留言,欢迎一起探讨交流。