cv2.imread
は常にNoneType
を返します。
64ビットWindows 7でpythonバージョン2.7およびOpenCV 2.4.6を使用しています。
別のコンピュータにpythonとcv2パッケージをまったく同じようにインストールすると正しく機能するため、バグまたは権限の問題のようです。コードは次のとおりです。
im = cv2.imread("D:\testdata\some.tif",CV_LOAD_IMAGE_COLOR)
http://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv からOpenCVをダウンロードしました。手がかりをいただければ幸いです。
まず、パスが有効であり、バックスラッシュが1つも含まれていないことを確認してください。他の回答を確認してください。 https://stackoverflow.com/a/26954461/463796 。
パスが固定されていても画像がまだ読み込まれない場合は、実際には OpenCVバグ の可能性があり、2013年の時点でまだ解決されていません。cv2.imread
は、Win32でも正しく動作しません。
それまでの間、正常に機能するLoadImageを使用してください。
im = cv2.cv.LoadImage("D:/testdata/some.tif", CV_LOAD_IMAGE_COLOR)
スラッシュの方向を変えてみてください
im = cv2.imread("D:/testdata/some.tif",CV_LOAD_IMAGE_COLOR)
または、文字列の先頭にrを追加します
im = cv2.imread(r"D:\testdata\some.tif",CV_LOAD_IMAGE_COLOR)
これに出くわしただけです。
解決策は非常に単純ですが、直感的ではありません。
test\pic.jpg
_または_test/pic.jpg
_のように、 '\'または '/'を使用できます。/.../test/pic.jpg
_、Windowsの場合は_C:/.../test/pic.jpg
_のように '/'のみを使用する必要があります。for root, _, files in os.walk(<path>):
をabs_path = os.path.join(root, file)
と組み合わせて使用します。 img = ocv.imread(abs_path)
のように、後でimreadを呼び出すと、常に機能します。私の場合、問題はパス内のスペースでした。画像をスペースのないパスに移動した後、うまくいきました。
私はこれに少し時間をかけましたが、このエラーは私のケースの壊れた画像ファイルが原因であることがわかりました。そのため、手動でファイルをチェックして、ファイルが有効であり、一般的な画像ビューアで開くことができることを確認してください。
同様の問題があり、画像の名前を英語のアルファベットに変更するとうまくいきました。また、数値の名前(1.jpgなど)では機能しませんでした。
これは解決するのに長い時間がかかりました。まず、ファイルがディレクトリにあることを確認し、Windowsエクスプローラーでファイルが「JPEG」であると表示されていても、実際には「JPG」であることを確認します。最初の印刷ステートメントは、ファイルが実際に存在することを確認するための鍵です。私は完全に初心者なので、コードに問題がある場合はそうです。コードは、画像をインポートして表示するだけです。コードがファイルを見つけると、Trueがpythonウィンドウに出力されます。
import cv2
import sys
import numpy as np
import os
image_path= "C:/python27/test_image.jpg"
print os.path.exists(image_path)
CV_LOAD_IMAGE_COLOR = 1 # set flag to 1 to give colour image
CV_LOAD_IMAGE_COLOR = 0 # set flag to 0 to give a grayscale one
img = cv2.imread(image_path,CV_LOAD_IMAGE_COLOR)
print img.shape
cv2.namedWindow('Display Window') ## create window for display
cv2.imshow('Display Window', img) ## Show image in the window
cv2.waitKey(0) ## Wait for keystroke
cv2.destroyAllWindows() ## Destroy all windows
私は同様の問題を抱えていました、スラッシュの方向を変えることはうまくいきました
以前、ubuntu 18.04でも同じ問題に遭遇しました。
cv2.imread(path)
path
引数をRelative_File_Path
からAbsolute_File_Path
に変更したときに解決しました。
お役に立てれば幸いです。
>>> im=cv2.imread("C:\Users\Virgile\Downloads\red.JPG")
>>> print im
None
>>> im=cv2.imread("C:/Users/Virgile/Downloads/red.JPG")
>>> print im
[[[ 15 36 51]
[ 18 34 51]
[ 19 33 51]
...,
(opencv 3.0.0でテスト済み)