cv2.imread
は画像を読み込めないとエラーにならずにNone
を返します。
cv2.cvtColor
にNone
を渡しているので、件のエラーが出ているようです。
Python
1img = cv2.imread("C:\2020-03\IMG_2052.JPG")
を
Python
1img = cv2.imread("C:\2020-03\IMG_2052.JPG")
あるいは
Python
1img = cv2.imread(r"C:\2020-03\IMG_2052.JPG")
としてみてはどうでしょうか?
以下追記
当方の環境 (Windows10/Python 3.8.10) で数カ所の修正で正常動作を確認しました。
Python
1import cv2
2import numpy as np
3from matplotlib import pyplot as plt
4
5def main():
6 img = cv2.imread(r"C:\2020-03\IMG_2052.JPG")
7
8 gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
9
10 hist, bins = np.histogram(gray.ravel(),256,[0,256])
11
12 print(hist)
13
14 plt.xlim(0,255)
15 plt.plot(hist)
16 plt.xlabel("pixel value", fontsize=20)
17 plt.ylabel("Number of pixels", fontsize=20)
18 plt.grid()
19 plt.show()
20
21if __name__ == "__main__":
22 main()