處理opencv里用plt顯示imread讀取圖像偏色問題
問題描述在使用opencv過程中,我們通常會(huì)使用plt輸出圖像進(jìn)行前后對(duì)比以方便觀察。然而,有時(shí)在使用plt顯示圖像時(shí),會(huì)出現(xiàn)嚴(yán)重的顏色偏差問題。這是因?yàn)閜lt和imread的顏色通道順序不同導(dǎo)致的。
問題描述
在使用opencv過程中,我們通常會(huì)使用plt輸出圖像進(jìn)行前后對(duì)比以方便觀察。然而,有時(shí)在使用plt顯示圖像時(shí),會(huì)出現(xiàn)嚴(yán)重的顏色偏差問題。這是因?yàn)閜lt和imread的顏色通道順序不同導(dǎo)致的。
解決方法
為了解決這個(gè)問題,我們需要將imread讀取的圖像的顏色通道重新調(diào)整順序。具體步驟如下:
1. 首先,使用讀入源圖并顯示。
``` python
import cv2 as cv
import numpy as np
import copy
import random
from matplotlib import pyplot as plt
img ('')
("原始img", img)
```
2. 然后,使用plt方法對(duì)imread生成的img進(jìn)行顯示。
``` python
(img)
()
```
3. 發(fā)現(xiàn)圖片出現(xiàn)嚴(yán)重的顏色偏差。
4. 原因是讀取圖像的顏色通道順序?yàn)閎,g,r,而plt顯示圖像時(shí)按照rgb順序。所以我們需要對(duì)顏色通道進(jìn)行轉(zhuǎn)換。
5. 解決方法是將顏色通道分離,調(diào)整順序后再合并。
``` python
b, g, r cv.split(img)
img_rgb ([r, g, b])
```
6. 最后,使用plt顯示調(diào)整后的圖像。
``` python
()
(img_rgb)
()
```
7. 完整代碼如下:
``` python
import cv2 as cv
import numpy as np
import copy
import random
from matplotlib import pyplot as plt
img ('')
("img<1", img)
# 如果本身是彩圖,似乎也沒什么影響!
img ('', 1)
("img1", img)
img ('', 3)
("img>1", img)
(img)
()
b, g, r cv.split(img)
img_rgb ([r, g, b])
()
(img_rgb)
()
cv.waitKey(0)
```
附圖為轉(zhuǎn)換后的plt顯示效果