|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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'
问题分析:
根据报错信息可以看出,错误发生在调用 cv2.Sobel函数时。报错信息中提到了一个断言错误: (!_src.empty()),意味着输入图像为空。
解决方案:
1. 首先,确保你的图像路径是正确的。确认 'F:\\duneline\\1=quick_dom.tif' 文件存在,并且可以被正常读取。如果文件路径不正确,将其更正为正确的路径。
2. 确保使用的图像格式是支持的图像格式。 cv2.imread 默认会尝试以彩色图像模式读取图像。如果你的图像是灰度图像,将其读取为灰度图像可以避免后续操作中的错误。你可以使用以下代码读取灰度图像: - image = cv2.imread('F:\\duneline\\1=quick_dom.tif', cv2.IMREAD_GRAYSCALE)
复制代码
3. 如果以上两个步骤没有解决问题,确认 image 是否为空。你可以添加以下代码来检查图片是否成功读取: - if image is None:
- print("无法读取图像")
- exit()
复制代码
4. 检查图像的尺寸和通道数是否符合算子的要求。 cv2.Sobel 函数要求输入图像的深度( depth)和通道数( ddepth)必须匹配。对于灰度图像,输入输出深度都应该是 cv2.CV_64F。
5. 最后,确保你的 OpenCV 版本是最新的。可以尝试更新 OpenCV 版本,或者使用其他版本的 OpenCV。
希望以上解决方案能够帮助你解决问题。如果问题仍然存在,请提供更多的信息和代码,以便我们进一步帮助你。
如果回答对你有帮助,请给我一个最佳答案! 
|
|