首页 > 解决方案 > python中的OpenCV cvtColor问题

问题描述

在此处输入图像描述我正在尝试按照此处的教程进行操作,但我不断收到以下错误。我在这个 stackoverflow 帖子中读到问题是因为cvtColor只需要 8 位或 16 位图像。

我的图像是来自plt.savefig()matplotlib 的 png,我认为它是 24 位图像。

1) 我对问题的诊断是正确的还是完全错误的?

2)假设1)是真的,我一直在寻找将24位图像变成8/16位的方法,但到目前为止我还没有找到任何东西。我的 matplotlib 图是从保存为array.npy文件的 numpy 数组中保存的图片。我应该尝试修改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'

标签: pythonopencv

解决方案


请检查此条目的答案,因为这是我在回复您时的想法:

函数'cvtColor'错误中的OpenCV!_src.empty()

发生此错误是因为图像未正确加载。所以你对上一行 cv2.imread 有问题,我的建议是:

- check if the images exist in the path you give
- check the count variable if he have valid number

我希望它对你有帮助。


推荐阅读