web-dev-qa-db-ja.com

cv2.imreadは常にNoneTypeを返します

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をダウンロードしました。手がかりをいただければ幸いです。

11
Tae-Sung Shin

まず、パスが有効であり、バックスラッシュが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)
4
w-m

スラッシュの方向を変えてみてください

im = cv2.imread("D:/testdata/some.tif",CV_LOAD_IMAGE_COLOR)

または、文字列の先頭にrを追加します

im = cv2.imread(r"D:\testdata\some.tif",CV_LOAD_IMAGE_COLOR)
6
aivision2020

これに出くわしただけです。

解決策は非常に単純ですが、直感的ではありません。

  • 相対パスを使用する場合は、それぞれ_test\pic.jpg_または_test/pic.jpg_のように、 '\'または '/'を使用できます。
  • 絶対パスを使用する場合は、UNIXの場合は_/.../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を呼び出すと、常に機能します。
4
Kris Jobs

私の場合、問題はパス内のスペースでした。画像をスペースのないパスに移動した後、うまくいきました。

2
Vincent

私はこれに少し時間をかけましたが、このエラーは私のケースの壊れた画像ファイルが原因であることがわかりました。そのため、手動でファイルをチェックして、ファイルが有効であり、一般的な画像ビューアで開くことができることを確認してください。

0
Qin Heyang

同様の問題があり、画像の名前を英語のアルファベットに変更するとうまくいきました。また、数値の名前(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
0
Dick

私は同様の問題を抱えていました、スラッシュの方向を変えることはうまくいきました

0
Rutuja Jadhav

以前、ubuntu 18.04でも同じ問題に遭遇しました。

cv2.imread(path)

path引数をRelative_File_PathからAbsolute_File_Pathに変更したときに解決しました。

お役に立てれば幸いです。

0
Hu Xixi
>>> 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でテスト済み)

0
Random