鱼C论坛

 找回密码
 立即注册
查看: 1017|回复: 5

[已解决]cv2问题 谢谢大家

[复制链接]
发表于 2023-8-3 21:15:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
代码:
import cv2
import numpy as np
from matplotlib import pyplot as plt
image = cv2.imread('F:\\duneline\\1=quick_dom.tif', cv2.IMREAD_GRAYSCALE)
sobelx = cv2.Sobel(image,cv2.CV_64F,1,0,ksize=5)  # x
sobely = cv2.Sobel(image,cv2.CV_64F,0,1,ksize=5)  # y
combined = cv2.bitwise_or(sobelx, sobely)
ret, binary = cv2.threshold(combined, 100, 255, cv2.THRESH_BINARY)
plt.imshow(binary, cmap='gray')
plt.show()
cv2.imwrite('ridge_lines.tiff', binary)
报错:
Traceback (most recent call last):
  File "F:/duneline/duneline.py", line 5, in <module>
    sobelx = cv2.Sobel(image,cv2.CV_64F,1,0,ksize=5)  # x
cv2.error: OpenCV(3.4.10) C:\projects\opencv-python\opencv\modules\imgproc\src\deriv.cpp:419: error: (-215:Assertion failed) !_src.empty() in function 'cv::Sobel'
最佳答案
2023-8-3 21:15:50
问题分析:

根据报错信息可以看出,错误发生在调用cv2.Sobel函数时。报错信息中提到了一个断言错误:(!_src.empty()),意味着输入图像为空。

解决方案:

1. 首先,确保你的图像路径是正确的。确认'F:\\duneline\\1=quick_dom.tif' 文件存在,并且可以被正常读取。如果文件路径不正确,将其更正为正确的路径。

2. 确保使用的图像格式是支持的图像格式。cv2.imread 默认会尝试以彩色图像模式读取图像。如果你的图像是灰度图像,将其读取为灰度图像可以避免后续操作中的错误。你可以使用以下代码读取灰度图像:
  1. image = cv2.imread('F:\\duneline\\1=quick_dom.tif', cv2.IMREAD_GRAYSCALE)
复制代码

3. 如果以上两个步骤没有解决问题,确认 image 是否为空。你可以添加以下代码来检查图片是否成功读取:
  1. if image is None:
  2.     print("无法读取图像")
  3.     exit()
复制代码

4. 检查图像的尺寸和通道数是否符合算子的要求。cv2.Sobel 函数要求输入图像的深度(depth)和通道数(ddepth)必须匹配。对于灰度图像,输入输出深度都应该是 cv2.CV_64F

5. 最后,确保你的 OpenCV 版本是最新的。可以尝试更新 OpenCV 版本,或者使用其他版本的 OpenCV。

希望以上解决方案能够帮助你解决问题。如果问题仍然存在,请提供更多的信息和代码,以便我们进一步帮助你。

如果回答对你有帮助,请给我一个最佳答案!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-3 21:15:36 | 显示全部楼层
这个错误是由于图像路径错误或图像加载失败导致的。请确保图像路径正确,并且图像文件存在。另外,还要确保使用的图像文件格式是OpenCV支持的格式,如JPEG、PNG等。如果问题仍然存在,可以尝试使用绝对路径来加载图像,或者检查图像文件是否损坏。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-3 21:15:46 | 显示全部楼层
问题分析:

根据报错信息,错误发生在 cv2.Sobel 函数调用的地方。报错信息中提到 _src.empty(),意味着输入的图像为空。

解决方法:

1. 首先,确保指定的图像文件路径 'F:\\duneline\\1=quick_dom.tif' 是正确的,并且文件存在。你可以检查一下路径是否正确,并且使用其他图像文件来测试。

2. 然后,检查图像文件是否被正确加载。使用 cv2.imread 函数加载图像时,需要确保图像文件路径是正确的,并且文件格式被正确支持。你可以使用 print(image) 来查看图像加载的结果,如果结果显示为 None,则表示图像加载失败,可能需要检查文件路径或文件格式。

3. 如果图像加载成功,检查加载的图像是否为空。你可以使用 image.shape 来查看图像的形状。如果结果显示为 (0, 0),则表示图像为空。可能原因是图像文件损坏或加载错误。

综上所述,你可以检查图像文件路径、格式和加载情况,以及确保图像不为空。如果问题仍然存在,请提供更多信息,我将尽力帮助你解决问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-3 21:15:50 | 显示全部楼层    本楼为最佳答案   
问题分析:

根据报错信息可以看出,错误发生在调用cv2.Sobel函数时。报错信息中提到了一个断言错误:(!_src.empty()),意味着输入图像为空。

解决方案:

1. 首先,确保你的图像路径是正确的。确认'F:\\duneline\\1=quick_dom.tif' 文件存在,并且可以被正常读取。如果文件路径不正确,将其更正为正确的路径。

2. 确保使用的图像格式是支持的图像格式。cv2.imread 默认会尝试以彩色图像模式读取图像。如果你的图像是灰度图像,将其读取为灰度图像可以避免后续操作中的错误。你可以使用以下代码读取灰度图像:
  1. image = cv2.imread('F:\\duneline\\1=quick_dom.tif', cv2.IMREAD_GRAYSCALE)
复制代码

3. 如果以上两个步骤没有解决问题,确认 image 是否为空。你可以添加以下代码来检查图片是否成功读取:
  1. if image is None:
  2.     print("无法读取图像")
  3.     exit()
复制代码

4. 检查图像的尺寸和通道数是否符合算子的要求。cv2.Sobel 函数要求输入图像的深度(depth)和通道数(ddepth)必须匹配。对于灰度图像,输入输出深度都应该是 cv2.CV_64F

5. 最后,确保你的 OpenCV 版本是最新的。可以尝试更新 OpenCV 版本,或者使用其他版本的 OpenCV。

希望以上解决方案能够帮助你解决问题。如果问题仍然存在,请提供更多的信息和代码,以便我们进一步帮助你。

如果回答对你有帮助,请给我一个最佳答案!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2023-8-3 21:23:24 | 显示全部楼层
根据报错信息和代码推测,产生错误的原因是源图像 image 为空。这可能是由于无法正确加载图像文件 'F:\duneline\1=quick_dom.tif' 导致的。

请确保图像文件路径正确,文件存在,并且可以被 OpenCV 正确读取。你可以尝试使用绝对路径或相对于当前工作目录的相对路径。

此外,还要检查是否已正确安装了 OpenCV 库,并且版本与代码兼容。你可以尝试更新或重新安装 OpenCV 库来解决潜在的兼容性问题。

总结:请检查图像文件路径及其可读性,确保已正确安装并配置了 OpenCV 库。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-4 07:40:59 | 显示全部楼层
你的错误可能是因为你的图像路径中有非ASCII字符,导致cv2.imread无法正确读取图像。你可以尝试以下方法:

- 确保图像文件存在于你指定的路径中,没有被移动或重命名。
- 确保图像路径中没有空格或特殊符号,例如中文字符。
- 使用np.fromfile和cv2.imdecode来代替cv2.imread,例如:

  1. def cv_imread(file_path):
  2.   cv_img = cv2.imdecode(np.fromfile(file_path, dtype=np.uint8), -1)
  3.   return cv_img
复制代码


- 在调用cv2.cvtColor之前,打印img或img.shape来检查图像是否正确加载,例如:

  1. img = cv_imread('F:\\duneline\\1=quick_dom.tif')
  2. print(img.shape)
复制代码


如果这些方法都不奏效,请提供更多的信息,例如你的操作系统,OpenCV版本,图像格式等。希望这些对你有帮助。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-20 16:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表