【Python入门教程】CV2报错:cv2.error: OpenCV(4.7.0) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\s

发布时间 2023-10-18 10:00:13作者: RS迷途小书童

        OpenCV作为一个强大计算机视觉库被各个领域广泛应用,今天分享下自己编程遇到的报错信息以及解决办法。

1 报错信息

[ WARN:0@3.596] global grfmt_tiff.cpp:716 cv::TiffDecoder::readData OpenCV TIFF: TIFFRGBAImageOK: Sorry, can not handle images with 64-bit samples

cv2.error: OpenCV(4.7.0) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'

        这里包含了一个警告和一个报错信息。

        警告信息:OpenCV库在处理TIFF图像时遇到的问题有关。从警告信息来看,你的TIFF图像可能使用了64位的样本(sample),而OpenCV的TiffDecoder无法处理这种情况

        报错信息:OpenCV在尝试对一个空的图像(或者路径无效,不能读取为图像)进行颜色空间转换时抛出的。cv2.cvtColor函数是用于改变图像的颜色空间的,例如从RGB转为灰度图像或者HSV等。错误信息表示你试图对一个空的图像(_src.empty()为真)进行颜色空间转换。换句话说,你给出的图像文件路径可能是错误的,或者文件不存在,或者虽然文件存在,但是无法正确读取。

2 解决办法

2.1 解决警告信息

        使用cv2.normalizecv2.convertScaleAbs函数或者GDAL库将tif转为8位。(cv2的两个函数我都没成功,用GDAL库成功了下篇文章再跟大家分享)

image_scaled = cv2.convertScaleAbs(image, alpha=0, beta=255) 
image_normalized = cv2.normalize(image, None, alpha=0, beta=255, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_8U)

2.2 解决报错信息

  1. 检查你的图像文件路径是否正确。确保路径是正确的,并且对应的文件确实存在。(别用中文路径)
  2. 确保你的图像文件是可以被OpenCV正确读取的。有些图像文件可能是损坏的,或者格式不被OpenCV支持。
  3. 在尝试读取图像之前,确保文件路径是正确的,并且文件存在。你可以使用os模块的os.path.exists()函数来检查。
  4. 同时也有可能是你的图片/tif是64位的图片,导致cv2库无法理解不能正常读取影像信息。解决办法参考2.1或者下篇文章。