在Python圖像處理中,cv2.imread()是一個非常基礎而重要的函數。本文將從幾個方面詳細解釋該函數的用法。
一、讀取圖片
cv2.imread()函數是將圖像載入內存中的函數,它的具體用法如下:
img = cv2.imread(file_path, flag)
其中,file_path 表示圖像文件的路徑,flag 代表讀取圖像的方式,可以是以下三種中的一種。
1. cv2.IMREAD_COLOR: 以 BGR 模式讀入圖像,單通道圖像將會被轉換為三通道圖像。
2. cv2.IMREAD_GRAYSCALE: 以灰度模式讀入圖像,顏色圖片將會被轉化為灰度模式。
3. cv2.IMREAD_UNCHANGED: 以彩色模式讀入圖像,包含 alpha 通道的圖像將會被讀出。
為了演示,下面將讀取一張png格式的圖片,代碼如下:
import cv2 img = cv2.imread('image.png', cv2.IMREAD_COLOR)
使用cv2.imshow(‘image’, img)可以查看圖片。如果想要使用matplotlib顯示圖像,代碼如下:
import numpy as np import matplotlib.pyplot as plt img = cv2.imread('image.png', cv2.IMREAD_COLOR) plt.imshow(np.uint8(img[:,:,::-1])) plt.show()
二、通道拆分
在處理圖像時,有時需要對其進行通道操作。cv2.imread()函數返回的圖像是以BGR方式存儲的圖像,我們可以使用以下方式分別讀取三種通道:
import cv2 img = cv2.imread('image.png', cv2.IMREAD_COLOR) b, g, r = cv2.split(img)
分別讀取了三個通道後,我們可以對每個通道進行相應的處理。
三、通道合併
在圖像處理時,經常會對某個通道進行處理,然後將處理後的三個通道合併為一張圖像。方法如下:
import cv2 img = cv2.imread('image.png', cv2.IMREAD_COLOR) b, g, r = cv2.split(img) img = cv2.merge([b, g, r])
這樣就可以重新生成圖像,並且可以對其中某個通道進行處理。需要注意的是,合併時需要保證通道的順序正確,即BGR順序。
四、通道取反
在轉換圖像顏色空間時,有時需要對圖像三種通道進行取反,如BGR變為RGB,RGB變為BGR。cv2.imread()函數也可以幫助我們完成該操作,方法如下:
import cv2 img = cv2.imread('image.png', cv2.IMREAD_COLOR) img = img[:,:,::-1]
使用[:,:,::-1]可以達到通道反轉的作用,即將BGR順序變為RGB順序。需要注意的是,這種方式只適用於三通道圖像。
五、調整亮度和對比度
有時,圖像過於暗淡或過於明亮,需要進行亮度和對比度的調整。cv2.imread()函數也可以幫助我們完成該操作,方法如下:
import cv2 img = cv2.imread('image.png', cv2.IMREAD_COLOR) alpha = 2.2 # 對比度 beta = 50 # 亮度 img = cv2.convertScaleAbs(img, alpha=alpha, beta=beta)
使用cv2.convertScaleAbs()函數即可完成圖像的亮度和對比度調整。其中,alpha代表對比度,beta代表亮度。通過調節這兩個參數,可以達到理想的圖像效果。
六、裁剪和縮放
在處理圖像時,有時需要對圖像進行裁剪和縮放。cv2.imread()函數也可以幫助我們完成該操作,方法如下:
import cv2 img = cv2.imread('image.png', cv2.IMREAD_COLOR) img_crop = img[100:300, 200:400] # 裁剪 img_resize = cv2.resize(img, (300, 300)) # 縮放
使用這兩個方法,可以對圖像進行裁剪和縮放。其中,img_crop 代表截取(100,300)到(200,400)區域的圖像;img_resize代表將圖像縮放為300×300大小的圖像。
總結
cv2.imread()函數是Python圖像處理中一個非常基礎的函數,它可以幫助我們讀取圖像,並進行通道拆分、通道合併、通道取反、亮度調整、對比度調整、裁剪和縮放等操作。在處理圖像時,它是一個非常實用的函數,值得我們認真學習和掌握。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/157658.html