我正在尝试按照教程here进行操作,但始终出现以下错误。我读过in this stackoverflow post的问题是因为cvtColor
仅拍摄8或16位图像。
我的图像是来自matplotlib中plt.savefig()
的png,我认为它是24位图像。
1)我对问题的诊断正确还是完全错误?
2)假设1)是正确的,我一直在寻找将24位图像转换为8/16位的方法,但是到目前为止我还没有发现任何东西。我的matplotlib图是从numpy数组保存的图片,该图片另存为array.npy
文件。我应该改为尝试修改array.npy
文件吗?
供参考的教程代码:
import cv2 as cv
im = cv.imread("binary_graph_8.png")
imgray = cv.cvtColor(im, cv.COLOR_BGR2GRAY)
ret, thresh = cv.threshold(imgray, 127, 255, 0)
im2, contours, hierarchy = cv.findContours(thresh, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE)
错误消息:
File "C:/Users/ek247/.PyCharm2018.3/config/scratches/scratch_1.py", line 5, in <module>
imgray = cv.cvtColor(im, cv.COLOR_BGR2GRAY)
cv2.error: OpenCV(4.0.0) C:\projects\opencv-python\opencv\modules\imgproc\src\color.cpp:181: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'
答案 0 :(得分:1)
请检查此条目的答案,因为这是我在答复您时所想的:
OpenCV !_src.empty() in function 'cvtColor' error
发生此错误是因为图像未正确加载。那么你 前一行cv2.imread有问题,我的建议是:
- check if the images exist in the path you give - check the count variable if he have valid number
希望对您有帮助。