圖像處理入門:實(shí)現(xiàn)一個(gè)簡(jiǎn)單的濾波器
簡(jiǎn)介人臉識(shí)別和目標(biāo)檢測(cè)這樣的術(shù)語聽起來覺得很酷,但是當(dāng)涉及到從頭開始實(shí)現(xiàn)它們時(shí),每個(gè)初學(xué)者都會(huì)覺得困難,這些技術(shù)實(shí)際上并沒有那么難實(shí)現(xiàn),一旦你掌握了其基本原理,那么實(shí)現(xiàn)它們就相當(dāng)簡(jiǎn)單了。圖像處理有很多種應(yīng)用,包括用于解析文檔和生成相應(yīng)文本的光學(xué)字符識(shí)別(OCR)、圖像增強(qiáng)與重建、物體識(shí)別、人體運(yùn)動(dòng)識(shí)別、手勢(shì)識(shí)別、人臉識(shí)別等。在學(xué)習(xí)的過程中,你會(huì)遇到過奇形怪狀的各種圖像濾波器,那有沒有去思考如何實(shí)現(xiàn)它嗎,在本文中,我們將通過實(shí)現(xiàn)一個(gè)簡(jiǎn)單的濾波器來開始我們的圖像處理之旅!什么是OpenCVOpenCV是一個(gè)開源庫,包含了許多計(jì)算機(jī)視覺算法。它在計(jì)算機(jī)視覺和圖像處理中起著重要作用,用于實(shí)時(shí)操作,其效率足以滿足工業(yè)上的要求。OpenCV可以與其他庫一起使用,比如Numpy,這使得Python能夠處理OpenCV數(shù)組結(jié)構(gòu)。實(shí)現(xiàn)我們的第一個(gè)濾波器檢測(cè)邏輯計(jì)算機(jī)不能像人類一樣識(shí)別物體,為了能讓計(jì)算機(jī)達(dá)到這個(gè)目的,我們可以使用各種技術(shù)來讓計(jì)算機(jī)理解圖像,我們會(huì)將顏色作為檢測(cè)物體的主要依據(jù)。我們使用HSV顏色空間作為檢測(cè)特征。什么是HSVHSV是Hue, Saturation 和Value(色調(diào)、飽和度和值)。色調(diào):根據(jù)光譜,物體的顏色可分為紅、藍(lán)、綠、黃四種顏色。飽和度:它定義了顏色的強(qiáng)度。值:定義顏色的亮度。OpenCV中有150多種顏色空間轉(zhuǎn)換方法,其中一種是彩色圖像到HSV圖像的轉(zhuǎn)換。我們來看看代碼我們需要導(dǎo)入我們要使用的庫-OpenCV(cv2)和Numpy。import cv2
import numpy as np
Numpy是一個(gè)python庫,用于處理數(shù)組,它比傳統(tǒng)的python列表快50倍,這對(duì)我們來說非常重要,因?yàn)槲覀円幚砗芏鄨D像。Numpy給了我們?cè)诰性代數(shù)、傅立葉變換、矩陣等領(lǐng)域工作的函數(shù)。import cv2
import numpy as np
def nothing():
pass
cap=cv2.VideoCapture(0)
while(1):
_, img = cap.read()
k=cv2.waitkey(1)&0xFF
if k==27:
break
cap.release()
cv2.destroyAllWindows()
我們創(chuàng)建了一個(gè)回調(diào)函數(shù),它什么也不做,讓我們看看為什么。我們使用一個(gè)窗口來控制HSV,因?yàn)槲覀儾恢酪獧z測(cè)的對(duì)象的HSV,因此我們用它來調(diào)整HSV的上下限。因?yàn)楫?dāng)我們使用創(chuàng)建trackbar的方法時(shí),我們需要傳遞一個(gè)必要的回調(diào)函數(shù),在我們的例子中,這個(gè)回調(diào)函數(shù)什么也不做(但是它的使用會(huì)根據(jù)父函數(shù)的需要而改變);然后我們使用了一個(gè)方法cv2.videocapture(0),它是一個(gè)內(nèi)置函數(shù),用來從默認(rèn)攝像機(jī)捕捉視頻(0表示選擇默認(rèn)攝像機(jī));最后,我們刪除了所有的窗口,并在一個(gè)點(diǎn)擊事件(這里我們?cè)O(shè)置為ESC鍵)后釋放捕獲。我們可以用下面的函數(shù)命名一個(gè)窗口。cv2.namedWindow(<window name>)
讓我們繼續(xù)敲代碼…import cv2
import numpy as np
def nothing(x):
pass
cap=cv2.VideoCapture(0)
cv2.namedWindow('tracking')
cv2.createTrackbar('LH','tracking',0,255,nothing)
cv2.createTrackbar('LS','tracking',0,255,nothing)
cv2.createTrackbar('LV','tracking',0,255,nothing)
cv2.createTrackbar('UH','tracking',255,255,nothing)
cv2.createTrackbar('US','tracking',255,255,nothing)
cv2.createTrackbar('UV','tracking',255,255,nothing)
因此,在設(shè)置檢測(cè)條件后,我們需要將原始數(shù)據(jù)(即彩色圖像)轉(zhuǎn)換為HSV圖像。為了將基本彩色圖像轉(zhuǎn)換為HSV圖像,我們使用<variableName> = cv2.cvtColor(<frameName>,cv2.COLOR_BGR2HSV)
然后利用Numpy數(shù)組方法設(shè)置trackbar中數(shù)據(jù)的上下界。<variableName> = np.a(chǎn)rray(<array_Of_Parameters>)
使用這個(gè),我們會(huì)得到上面設(shè)置的所有軌跡條值。接下來我們主要做兩件事:1.創(chuàng)建掩碼掩碼是一種二進(jìn)制圖像,它指示要在其中執(zhí)行操作的像素。2.我們將使用位和邏輯來屏蔽原始圖像。我們使用名為“bitwise_and”的cv2方法,它執(zhí)行邏輯與運(yùn)算。<maskName> = cv2.inRange(hav, l_b, u_b)
res = cv2.bitwise_and(<frameName>, <frameName>, mask = <maskName>)
import cv2
import numpy as np
def nothing(x):
pass
cap=cv2.VideoCapture(0)
cv2.namedWindow('tracking')
cv2.createTrackbar('LH','tracking',0,255,nothing)
cv2.createTrackbar('LS','tracking',0,255,nothing)
cv2.createTrackbar('LV','tracking',0,255,nothing)
cv2.createTrackbar('UH','tracking',255,255,nothing)
cv2.createTrackbar('US','tracking',255,255,nothing)
cv2.createTrackbar('UV','tracking',255,255,nothing)
while (1):
_, img=cap.read()
hav=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
l_h(yuǎn)=cv2.getTrackbarPos('LH','tracking')
l_s=cv2.getTrackbarPos('LS', 'tracking')
l_v=cv2.getTrackbarPos('LV', 'tracking')
u_h(yuǎn)=cv2.getTrackbarPos('UH', 'tracking')
u_s=cv2.getTrackbarPos('US', 'tracking')
u_v=cv2.getTrackbarPos('UV', 'tracking')
l_b=np.a(chǎn)rray([l_h(yuǎn),l_s,l_v])
u_b=np.a(chǎn)rray([u_h(yuǎn),u_s,u_v])
mask=cv2.inRange(hav, l_b, u_b)
res = cv2.bitwise_and(img, img, mask=mask)
cv2.imshow('image', img)
cv2.imshow('mask', mask)
cv2.imshow('res', res)
k=cv2.waitKey(1)&0xFF
if k==27:
break
cap.release()
cv2.destroyAllWindows()
這些幀使用名為“imshow”的方法顯示。cv2.imshow(<name_of_Window>, <windowVariable>)
結(jié)果
結(jié)果只檢測(cè)到粉紅色的物體,這是因?yàn)槲覀冎幌脒x擇粉紅色的物體!實(shí)際上,我們已經(jīng)使用軌跡條為特定的粉紅色設(shè)置了HSV值,這就是輸出只有特定粉紅色的原因。您可以選擇要檢測(cè)的任何特定顏色值。
結(jié)論本文我們實(shí)現(xiàn)了一個(gè)濾波器,可以檢測(cè)我們指定特定顏色的物體。我們所做的只是圖像處理和目標(biāo)檢測(cè)的一個(gè)非常基本的介紹性任務(wù)。近年來,計(jì)算機(jī)視覺領(lǐng)域有了很大的發(fā)展,其中大部分都包含了機(jī)器學(xué)習(xí)和深度學(xué)習(xí)技術(shù)。在許多項(xiàng)目中,對(duì)象檢測(cè)是首先執(zhí)行的基本任務(wù),因?yàn)樗鼮槲覀兲峁┝擞嘘P(guān)環(huán)境的信息,我們可以根據(jù)使用情況進(jìn)行過濾。
參考引用Implementing colour and shape-based object detection and tracking with OpenCV.

發(fā)表評(píng)論
請(qǐng)輸入評(píng)論內(nèi)容...
請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字
最新活動(dòng)更多
-
6月20日立即下載>> 【白皮書】精準(zhǔn)測(cè)量 安全高效——福祿克光伏行業(yè)解決方案
-
7月3日立即報(bào)名>> 【在線會(huì)議】英飛凌新一代智能照明方案賦能綠色建筑與工業(yè)互聯(lián)
-
7月22-29日立即報(bào)名>> 【線下論壇】第三屆安富利汽車生態(tài)圈峰會(huì)
-
7.30-8.1火熱報(bào)名中>> 全數(shù)會(huì)2025(第六屆)機(jī)器人及智能工廠展
-
7月31日免費(fèi)預(yù)約>> OFweek 2025具身機(jī)器人動(dòng)力電池技術(shù)應(yīng)用大會(huì)
-
免費(fèi)參會(huì)立即報(bào)名>> 7月30日- 8月1日 2025全數(shù)會(huì)工業(yè)芯片與傳感儀表展
推薦專題
- 1 AI 眼鏡讓百萬 APP「集體失業(yè)」?
- 2 大廠紛紛入局,百度、阿里、字節(jié)搶奪Agent話語權(quán)
- 3 深度報(bào)告|中國AI產(chǎn)業(yè)正在崛起成全球力量,市場(chǎng)潛力和關(guān)鍵挑戰(zhàn)有哪些?
- 4 上海跑出80億超級(jí)獨(dú)角獸:獲上市公司戰(zhàn)投,干人形機(jī)器人
- 5 一文看懂視覺語言動(dòng)作模型(VLA)及其應(yīng)用
- 6 國家數(shù)據(jù)局局長(zhǎng)劉烈宏調(diào)研格創(chuàng)東智
- 7 下一代入口之戰(zhàn):大廠為何紛紛押注智能體?
- 8 百億AI芯片訂單,瘋狂傾銷中東?
- 9 Robotaxi新消息密集釋放,量產(chǎn)元年誰在領(lǐng)跑?
- 10 格斗大賽出圈!人形機(jī)器人致命短板曝光:頭腦過于簡(jiǎn)單