Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的OpenCV cvtColor问题_Python_Opencv - Fatal编程技术网

python中的OpenCV cvtColor问题

python中的OpenCV cvtColor问题,python,opencv,Python,Opencv,我试图按照教程,我不断得到以下错误。我读到这个问题是因为cvtColor只拍摄8位或16位图像 我的图像是一个png,来自matplotlib中的plt.savefig(),我认为它是一个24位图像 1) 我对问题的诊断是正确的还是完全错误的 2) 假设1)为真,我一直在寻找将24位图像转换为8/16位的方法,但到目前为止我还没有找到任何方法。我的matplotlib绘图是从numpy数组保存的图片,该数组保存为array.npy文件。我应该改为修改array.npy文件吗 教程代码供参考: i

我试图按照教程,我不断得到以下错误。我读到这个问题是因为
cvtColor
只拍摄8位或16位图像

我的图像是一个png,来自matplotlib中的
plt.savefig()
,我认为它是一个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'
文件“C:/Users/ek247/.PyCharm2018.3/config/scratch/scratch_1.py”,第5行,在
imgray=cv.CVT颜色(im,cv.COLOR\U BGR2GRAY)
cv2.error:OpenCV(4.0.0)C:\projects\opencvpython\OpenCV\modules\imgproc\src\color.cpp:181:error:(-215:断言失败)_函数“cv::cvtColor”中的src.empty()

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

发生此错误是因为图像加载不正确。那么你呢 前一行cv2有问题。我的建议是:

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

我希望它能帮助你。

你说你的图像是PNG,但你的代码打开了JPEG?一般来说,人们在说8位和24位图像时的意思是一样的,因为红色、绿色和蓝色样本的每个样本8位表示每个像素24位。我的图像是PNG,但是我直接发布了使用JPEG的教程中的代码。@MarkSetchell我继续上传了图片并复制了我的代码,而不是教程中的代码,事后看来,这似乎是更明智的做法!您的映像不是空的断言失败。因此,唯一可能的解释是,您的图像是空的,即它没有加载,因此路径可能不正确。您是对的。我只是试着打印出
im
,结果却一无所获。我想知道为什么图像是空的,但至少我不再被卡住了!原来我的图像是空的……实际上我一直都在将python加载到错误的文件夹中:(愚蠢的错误——有时会发生这种情况。这是我对它进行成像的第一件事,但它们有助于学习。)祝你好运!!