PythonMania

普段はロボットとAIを組み合わせて色々作ってます。Python関係以外も色々投稿していくと思います。

OpenCVで画像を読み込むと色が変わってしまう

OpenCVで画像を読み込んで表示した際に、画像の色が変わってしまうことがあります。




具体的には茶色の部分が合おうく表示されてしまします。



この画像が

f:id:mizuhiki0111:20190425113402j:plain




こんな感じになります



f:id:mizuhiki0111:20190425113359j:plain



これは色を表示する順番の違い(BGR(青緑赤)RGB(赤緑青)が原因のようです。



Pythonの画像処理ライブラリであるOpenCV(RGB)とPillow(BGR)の違いにより発生するみたいですが

僕の場合はOpenCVで読み込み・表示を行っても色が変わってしまう現象が起きました笑




この場合はnumpy配列に変換した後にcv2.cvtColor(img, cv2.COLOR_BGR2RGB)で変更すればOKです



img = "~/test.jpg"
img = cv2.imread(img)
img = np.asarray(img)  
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(testImg)