????????OpenCV作為一個強(qiáng)大計算機(jī)視覺庫被各個領(lǐng)域廣泛應(yīng)用,今天分享下自己編程遇到的報錯信息以及解決辦法。
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圖像時遇到的問題有關(guān)。從警告信息來看,你的TIFF圖像可能使用了64位的樣本(sample),而OpenCV的TiffDecoder無法處理這種情況
? ? ? ? 報錯信息:OpenCV在嘗試對一個空的圖像(或者路徑無效,不能讀取為圖像)進(jìn)行顏色空間轉(zhuǎn)換時拋出的。cv2.cvtColor
函數(shù)是用于改變圖像的顏色空間的,例如從RGB轉(zhuǎn)為灰度圖像或者HSV等。錯誤信息表示你試圖對一個空的圖像(_src.empty()為真)進(jìn)行顏色空間轉(zhuǎn)換。換句話說,你給出的圖像文件路徑可能是錯誤的,或者文件不存在,或者雖然文件存在,但是無法正確讀取。文章來源:http://www.zghlxwxcb.cn/news/detail-715937.html
2 解決辦法
2.1 解決警告信息
? ? ? ? 使用cv2.normalize
、cv2.convertScaleAbs
函數(shù)或者GDAL庫將tif轉(zhuǎn)為8位。(cv2的兩個函數(shù)我都沒成功,用GDAL庫成功了下篇文章再跟大家分享)文章來源地址http://www.zghlxwxcb.cn/news/detail-715937.html
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 解決報錯信息
- 檢查你的圖像文件路徑是否正確。確保路徑是正確的,并且對應(yīng)的文件確實(shí)存在。(別用中文路徑)
- 確保你的圖像文件是可以被OpenCV正確讀取的。有些圖像文件可能是損壞的,或者格式不被OpenCV支持。
- 在嘗試讀取圖像之前,確保文件路徑是正確的,并且文件存在。你可以使用os模塊的os.path.exists()函數(shù)來檢查。
- 同時也有可能是你的圖片/tif是64位的圖片,導(dǎo)致cv2庫無法理解不能正常讀取影像信息。解決辦法參考2.1或者下篇文章。
到了這里,關(guān)于【Python入門教程】CV2報錯:cv2.error: OpenCV(4.7.0) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\s的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!