python中的OpenCV cvtColor问题

时间:2019-02-17 20:45:06

标签: python opencv

enter image description here我正在尝试按照教程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'

1 个答案:

答案 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

希望对您有帮助。