現在以下のコードで入力画像の正規化を行っており、正規化した画像をグレースケール化して二値処理しようとしています。グレースケール化するために、cv2.cvtColor() を用いようとしているのですが、調べたところ入力画像のdtypeがfloat64型ではだめなことを知ったため、uint8に変換したのですが変換することで元画像(入力画像)が表示されなく(真っ黒な画像になる)なりました。
正規化した画像をグレースケール化する方法は、なにかありますでしょうか?
補足:私は、Google Colaboratory でプログラムを実行しています。
python
1#正規化 2img = cv2.imread(files[5]) 3imgHLS = cv2.cvtColor(img, cv2.COLOR_BGR2HLS) 4Lchannel = imgHLS[:,:,1] 5norm = Lchannel / Lchannel.sum() 6 7cv2.imwrite("1.png", norm) 8plt.imshow(norm) 9print(norm.dtype) 10norm = norm.astype(np.uint8) #型をuint8に変換 11 12#ここから下でエラーが発生する 13norm = cv2.cvtColor(norm, cv2.COLOR_GRAY2RGB) 14img = cv2.cvtColor(norm, cv2.COLOR_RGB2GRAY) 15print(img.shape)
