OpenCV作为一个强大计算机视觉库被各个领域广泛应用,今天分享下自己编程遇到的报错信息以及解决办法。
[ WARN:[email protected]] 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()为真)进行颜色空间转换。换句话说,你给出的图像文件路径可能是错误的,或者文件不存在,或者虽然文件存在,但是无法正确读取。
使用cv2.normalize
、cv2.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)