關於OpenCV imread和imdecode讀取圖片是BGR的證明
攜手創作,共同成長!這是我參與「掘金日新計劃 · 8 月更文挑戰」的第3天,點擊查看活動詳情
關於OpenCV操作的一些問題。
1、如何證明OpenCV讀取的通道是BGR通道?
我使用RGB三色的圖來證明,圖片從OpenCV的裏面獲取,將其修改為‘00.png’。
代碼:
cpp
import matplotlib.pyplot as plt
import cv2
import numpy as np
img=cv2.imread('D://00.png')
b,g,r = cv2.split(img)
cv2.namedWindow("original_img", cv2.WINDOW_NORMAL)
cv2.imshow("original_img",img)
cv2.namedWindow("img_b", cv2.WINDOW_NORMAL)
cv2.imshow("img_b",b)
cv2.namedWindow("img_g", cv2.WINDOW_NORMAL)
cv2.imshow("img_g",g)
cv2.namedWindow("img_r", cv2.WINDOW_NORMAL)
cv2.imshow("img_r",r)
cv2.waitKey(0)
步驟:
讀入圖片 將圖片的三個通道分開。 然後用cv2.imshow展示原始圖片和三個通道。
結果如下:
從上面的圖片可以看出: img_b展示的藍色。 img_g展示的綠色。 img_r展示的紅色。
C++版代碼: ```cpp
include
include
include
include "opencv2/imgproc.hpp"
include "opencv2/imgcodecs.hpp"
include
using namespace cv; int main() { Mat src = imread("00.png"); namedWindow("src", CV_WINDOW_NORMAL); imshow("src", src);//原圖像 Mat rgb[3]; split(src, rgb); namedWindow("B", CV_WINDOW_NORMAL); imshow("B", rgb[0]);//第一個通道存放B分量 namedWindow("G", CV_WINDOW_NORMAL); imshow("G", rgb[1]);//第二個通道存放G分量 namedWindow("R", CV_WINDOW_NORMAL); imshow("R", rgb[2]);//第三個通道存放R分量 waitKey(0); } ``` 使用plt做圖片展示
python
import matplotlib.pyplot as plt
import cv2
import numpy as np
img=cv2.imread('D://00.png')
b,g,r = cv2.split(img)
fig, axes = plt.subplots(1, 4, figsize=(15, 15))
axes[0].imshow(img)
axes[1].imshow(b)
axes[2].imshow(g)
axes[3].imshow(r)
plt.show()
輸出圖片:
plt展示的原始圖片,我們就可以看出BGR通道了。
2、如何證明使用imdecode將解碼的圖片轉為BGR圖片。
imdecode方法中有這樣一句話,在彩色圖像的情況下,解碼後的圖像將以 B G R 順序存儲通道。我用下面的代碼證明這句話。
代碼:
python
with open("D://00.png", "rb") as image:
f = image.read()
# convert to numpy array
image = np.asarray(bytearray(f))
img = cv2.imdecode(image, 1)
b, g, r = cv2.split(img)
cv2.namedWindow("original_img", cv2.WINDOW_NORMAL)
cv2.imshow("original_img", img)
cv2.namedWindow("img_b", cv2.WINDOW_NORMAL)
cv2.imshow("img_b", b)
cv2.namedWindow("img_g", cv2.WINDOW_NORMAL)
cv2.imshow("img_g", g)
cv2.namedWindow("img_r", cv2.WINDOW_NORMAL)
cv2.imshow("img_r", r)
cv2.waitKey(0)
輸出結果:
- YoloV5實戰:手把手教物體檢測——YoloV5
- 基於阿里Semantatic Human Matting算法,實現精細化人物摳圖
- PPv3-OCR自定義數據從訓練到部署
- 如何下載pytorch的歷史版本?
- WinForm——Button總結
- WinForm——MDI窗體
- 升級 pip
- 將8位的tif圖片改為png圖片
- RepLKNet實戰:使用RepLKNet實現對植物幼苗的分類(非官方)(二)
- 關於OpenCV imread和imdecode讀取圖片是BGR的證明
- opencv讀取圖片通道以及顯示
- 萬字整理聯邦學習系統架構設計參考
- 編譯器堆空間不足
- 【圖像分類】實戰——使用EfficientNetV2實現圖像分類(Pytorch)
- MMDetection實戰:MMDetection訓練與測試
- UNet語義分割實戰:使用UNet實現對人物的摳圖
- MobileVIT實戰:使用MobileVIT實現圖像分類
- SwinIR實戰:如何使用SwinIR和預訓練模型實現圖片的超分
- 【圖像分類】手撕ResNet——復現ResNet(Pytorch)
- Deeplab實戰:使用deeplabv3實現對人物的摳圖