210063x
@210063x (k k)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

python opencv 初心者です。 グレースケール変換のエラー

Q&A

Closed

解決したいこと

pythonを先月から始めたものです。
画像を読み込ませてグレースケール化したいのですが、このようなエラーが出てしまいできません。

エラーを見てもよくわからないため、ご教授いただけると幸いです。 
画像はデジカメで撮影したデータです。 

発生している問題・エラー

---------------------------------------------------------------------------
error                                     Traceback (most recent call last)
<ipython-input-12-5d3ecd53944f> in <module>
      9 infile, outfile = sys.argv[1], sys.argv[2]
     10 img_bgr = cv2.imread('DSC09940.jpg')
---> 11 img_bgrL = cv2.LUT(img_bgr, gamma22LUT)
     12 img_grayL = cv2.cvtColor(img_bgrL, cv2.COLOR_BGR2GRAY)
     13 img_gray = pow(img_grayL, 1.0/2.2) * 255

error: OpenCV(4.4.0) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-9d_dfo3_\opencv\modules\core\src\matrix.cpp:406: error: (-215:Assertion failed) m.dims >= 2 in function 'cv::Mat::Mat'





import sys
import cv2
import numpy
import matplotlib.pyplot as plt
%matplotlib inline

gamma22LUT = numpy.array([pow(x/255.0 , 2.2) for x in range(256)],
                         dtype='float32')
infile, outfile = sys.argv[1], sys.argv[2]
img_bgr = cv2.imread('DSC09940.jpg')
img_bgrL = cv2.LUT(img_bgr, gamma22LUT)
img_grayL = cv2.cvtColor(img_bgrL, cv2.COLOR_BGR2GRAY)
img_gray = pow(img_grayL, 1.0/2.2) * 255
cv2.imwrite("test01.jpg",img_gray)



0

1Answer

正しく画像を読めてないだけかなと思います。
pythonの実行ディレクトリに画像を置いてありますか。
よくわからない場合、絶対パスで指定するのが確実です。
パス"¥"はエスケープする必要がありますので、\\と書くか、先頭にrを付けます。(バックスラッシュ/であればそのままでよいです)

(例1) img_bgr = cv2.imread('C:\\USERS\\DSC09940.jpg')
(例2) img_bgr = cv2.imread(r'C:\USERS\DSC09940.jpg')
(例3) img_bgr = cv2.imread('C:/USERS/DSC09940.jpg')

画像が読めているかどうかは、以下のようにして読み込んだ画像を表示できます。

img_bgr = cv2.imread('DSC09940.jpg')
plt.imshow(cv2.cvtColor(img_bgr, cv2.COLOR_BGR2RGB))
plt.show()

エラーはそのままGoogle等に張り付けて検索すれば色々出てきます。(下記部分)

error: (-215:Assertion failed) m.dims >= 2 in function 'cv::Mat::Mat'
1Like

Your answer might help someone💌