首頁 > 軟體

python OpenCV 影象通道數判斷

2022-04-15 16:00:20

前言

OpenCV是影象處理常用的庫,作為初學者,往往從圖片的讀取、儲存、查詢圖片的資訊開始,下面將分享Python下OpenCV的一些基本使用方法,掌握這些基本方法後,能夠更好地與matplotlib、numpy等結合使用,完成相應的影象操作。

教學

1、讀取/儲存圖片

1)imread和imwrite方法

注:此方法遇到中文路徑會報錯!

import cv2

# 引數1:檔案路徑
# 引數2:讀取方式
# 常用幾種模式:
# 	灰度圖:cv2.IMREAD_GRAYSCALE
#	BGR三通道彩色圖:cv2.IMREAD_COLOR
#	原始通道(自動判斷:單通道/三通道/四通道等):cv2.IMREAD_UNCHANGED
img = cv2.imread('影象檔案路徑(全英文)', cv2.IMREAD_COLOR)

# 引數1:檔案路徑
# 引數2:待儲存的影象(BGR格式的uint8 ndarray型別)
# 引數3【可選】:壓縮模式以及質量等
# 常用幾種模式:
# 	灰度圖:cv2.IMREAD_GRAYSCALE
#	BGR三通道彩色圖:cv2.IMREAD_COLOR
#	原始通道(自動判斷:單通道/三通道/四通道等):cv2.IMREAD_UNCHANGED
img_saved = cv2.imwrite('影象輸出路徑(含影象名)', img)

2)imdecode和imencode方法

import cv2
import numpy as np

# cv2.imdecode():從指定的記憶體快取中讀取資料,並把資料轉換成影象格式
src_img_path = './image.png'
img=cv2.imdecode(np.fromfile(src_img_path, dtype=np.uint8),cv2.IMREAD_UNCHANGED)

# cv2.imencode():將圖片格式轉換成流資料,寫入記憶體快取中,可以再呼叫.tofile()寫入到磁碟中
out_img_path = './image.jpg'
extension = '.jpg'
cv2.imencode(extension,img)[1].tofile(out_img_path)

2、編碼轉換

1)BGR轉RGB

matplotlib.pyplot的imshow()方法廣泛用於顯示影象,然而opencv預設載入的影象時BGR格式,直接顯示會出現顏色異常,需要先進行轉換

img_rgb = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)

2)BGR轉GRAY

三通道的BRG彩色影象轉換成單通道的灰度圖

img_gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

3、快速判斷影象是否單通道灰度圖

if img.ndim == 2:
	print('影象是單通道灰度圖')
else:
	print('影象包含多個通道')

4、獲取影象通道數

def get_n_channel(img):
	if img.ndim == 2:
		print('通道數:1')
		return 1
	else:
		print('影象包含多個通道')
		return img.shape[2]

到此這篇關於python OpenCV 影象通道數判斷的文章就介紹到這了,更多相關OpenCV 影象通道數內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com