強力なコンピューター ビジョン ライブラリとして、OpenCV はさまざまな分野で広く使用されています。今日は、私がプログラミング中に遭遇したエラー メッセージと解決策を共有します。
1 エラーメッセージ
[ 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'
これには、警告とエラー メッセージが含まれています。
警告メッセージ: これは、TIFF イメージを処理するときに OpenCV ライブラリで発生した問題に関連しています。警告メッセージから判断すると、TIFF 画像は 64 ビット サンプルを使用している可能性があり、OpenCV の TiffDecoder はこの状況を処理できません
エラー メッセージ:空の画像に対して色空間変換を実行しようとすると、OpenCV がスローされます (またはパスが無効で画像として読み取れません)。 cv2.cvtColor
この関数は、RGB からグレースケール画像や HSV への変換など、画像の色空間を変更するために使用されます。このエラー メッセージは、空のイメージ (_src.empty() が true) に対して色空間変換を実行しようとしたことを示しています。つまり、指定した画像ファイルのパスが間違っているか、ファイルが存在しないか、ファイルは存在しても正しく読み取れない可能性があります。
2つのソリューション
2.1 警告メッセージを解決する
cv2.normalize
、cv2.convertScaleAbs
関数または GDAL ライブラリを使用して、tif を 8 ビットに変換します。 (cv2 の 2 つの関数では成功しませんでした。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 エラーメッセージの解決方法
- 画像ファイルのパスが正しいことを確認してください。パスが正しいこと、および対応するファイルが実際に存在することを確認してください。 (中国語のパスは使用しないでください)
- 画像ファイルが OpenCV で正しく読み取れることを確認してください。一部の画像ファイルが破損しているか、OpenCV でサポートされていない形式である可能性があります。
- イメージを読み取る前に、ファイル パスが正しいこと、およびファイルが存在することを確認してください。これは、os モジュールの os.path.exists() 関数を使用して確認できます。
- 同時に、画像/tif が 64 ビット画像であるため、cv2 ライブラリが画像情報を正常に理解して読み取ることができない可能性もあります。解決方法については、2.1 または次の記事を参照してください。