設計師個人網(wǎng)站模板湖州網(wǎng)站seo
【1】引言
前序已經(jīng)對BGR圖像和HSV圖像的轉換進行了基本討論,相關文章鏈接為:
python學opencv|讀取圖像(十二)BGR圖像轉HSV圖像-CSDN博客
python學opencv|讀取圖像(十三)BGR圖像和HSV圖像互相轉換深入-CSDN博客
在前序學習進程中,我們也了解BGR彩色圖像 存在三個通道來管理三種基色的組成比例,此外HSV圖像也存在三個參數(shù)來管理圖像亮度飽和度等。相關文章鏈接有:
python學opencv|讀取圖像(六)讀取圖像像素RGB值_opencv讀取灰度圖-CSDN博客
在此基礎上,我們嘗試抓取各個通道的具體數(shù)值。
帶著這個目標,我們開啟本次學習。
【2】官網(wǎng)教程
要想抓取各個通道的具體數(shù)值,需要使用split()函數(shù),點擊下述鏈接,可以直達官網(wǎng)教程:
OpenCV: Channel split
?未進行實際測試,我們開始編輯代碼。
【3】代碼測試
【3.1】讀取圖像
首先是完成圖片的讀取,可寫入的基礎代碼為:
import cv2 as cv #引入CV模塊
import numpy as np #引入numpy模塊bgr_image=cv.imread('cv-ini-000.png')if bgr_image is not None:cv.imshow('cv-ini-000',bgr_image) #在屏幕上展示圖片cv.imwrite('cv-ini-000-save.png',bgr_image) #保存圖片cv.waitKey() #不會自動關閉圖像cv.destroyAllWindows() #釋放所有窗口
else:print("There is no any photo")
在這里,使用的原始圖像cv-ini.png為:
?圖1 cv-ini.png
【3.2】BGR拆分
然后先進行BGR拆分以讀取數(shù)據(jù),可以直接新增下述代碼:
b,g,r=cv.split(bgr_image) #bgr拆分 cv.imshow('B',b) #顯示B通道 cv.imshow('G',g) #顯示G通道 cv.imshow('R',r) #顯示R通道cv.imwrite('cv-ini-000-save-b.png',b) #保存B通道圖片 cv.imwrite('cv-ini-000-save-g.png',g) #保存G通道圖片 cv.imwrite('cv-ini-000-save-r.png',r) #保存R通道圖片
運行后,獲得BGR通道的照片為:
圖2 B通道圖像
圖3 G通道圖像
圖4 R通道圖像?
【3.3】HSV拆分
然后先進行HSV拆分,可以直接新增下述代碼。
代碼包括兩大模塊:第一模塊將BGR圖像轉化為HSV圖像,第二模塊才是對HSV圖像進行通道拆分以進行數(shù)據(jù)讀取。
# BGR轉HSVhsv_image=cv.cvtColor(bgr_image,cv.COLOR_BGR2HSV) #BGR轉HSVcv.imshow('cv-ini-000-hsv',hsv_image) #在屏幕上展示圖片cv.imwrite('cv-ini-000-save-hsv.png',hsv_image) #保存圖片# HSV拆分h,s,v=cv.split(hsv_image) #HSV拆分cv.imshow('H',h) #顯示H通道cv.imshow('S',s) #顯示S通道cv.imshow('V',v) #顯示V通道# 保存cv.imwrite('cv-ini-000-save-h.png',h) #保存H通道圖片cv.imwrite('cv-ini-000-save-s.png',s) #保存S通道圖片cv.imwrite('cv-ini-000-save-v.png',v) #保存V通道圖片
運行代碼后,獲得的HSV格式圖像為:
圖5 HSV格式圖像
獲得的H、S和V通道照片為:
圖6 H通道圖像
圖7 S通道圖像
?圖8 V通道圖像
?【4】總結
掌握了BGR和HSV圖像各通道數(shù)據(jù)抓取函數(shù)cv2.split()的基本使用方法。