圖像處理入門:實(shí)現(xiàn)一個(gè)簡單的濾波器
簡介人臉識別和目標(biāo)檢測這樣的術(shù)語聽起來覺得很酷,但是當(dāng)涉及到從頭開始實(shí)現(xiàn)它們時(shí),每個(gè)初學(xué)者都會覺得困難,這些技術(shù)實(shí)際上并沒有那么難實(shí)現(xiàn),一旦你掌握了其基本原理,那么實(shí)現(xiàn)它們就相當(dāng)簡單了。圖像處理有很多種應(yīng)用,包括用于解析文檔和生成相應(yīng)文本的光學(xué)字符識別(OCR)、圖像增強(qiáng)與重建、物體識別、人體運(yùn)動識別、手勢識別、人臉識別等。在學(xué)習(xí)的過程中,你會遇到過奇形怪狀的各種圖像濾波器,那有沒有去思考如何實(shí)現(xiàn)它嗎,在本文中,我們將通過實(shí)現(xiàn)一個(gè)簡單的濾波器來開始我們的圖像處理之旅!什么是OpenCVOpenCV是一個(gè)開源庫,包含了許多計(jì)算機(jī)視覺算法。它在計(jì)算機(jī)視覺和圖像處理中起著重要作用,用于實(shí)時(shí)操作,其效率足以滿足工業(yè)上的要求。OpenCV可以與其他庫一起使用,比如Numpy,這使得Python能夠處理OpenCV數(shù)組結(jié)構(gòu)。實(shí)現(xiàn)我們的第一個(gè)濾波器檢測邏輯計(jì)算機(jī)不能像人類一樣識別物體,為了能讓計(jì)算機(jī)達(dá)到這個(gè)目的,我們可以使用各種技術(shù)來讓計(jì)算機(jī)理解圖像,我們會將顏色作為檢測物體的主要依據(jù)。我們使用HSV顏色空間作為檢測特征。什么是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倍,這對我們來說非常重要,因?yàn)槲覀円幚砗芏鄨D像。Numpy給了我們在線性代數(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測的對象的HSV,因此我們用它來調(diào)整HSV的上下限。因?yàn)楫?dāng)我們使用創(chuàng)建trackbar的方法時(shí),我們需要傳遞一個(gè)必要的回調(diào)函數(shù),在我們的例子中,這個(gè)回調(diào)函數(shù)什么也不做(但是它的使用會根據(jù)父函數(shù)的需要而改變);然后我們使用了一個(gè)方法cv2.videocapture(0),它是一個(gè)內(nèi)置函數(shù),用來從默認(rèn)攝像機(jī)捕捉視頻(0表示選擇默認(rèn)攝像機(jī));最后,我們刪除了所有的窗口,并在一個(gè)點(diǎn)擊事件(這里我們設(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è)置檢測條件后,我們需要將原始數(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è),我們會得到上面設(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é)果只檢測到粉紅色的物體,這是因?yàn)槲覀冎幌脒x擇粉紅色的物體!實(shí)際上,我們已經(jīng)使用軌跡條為特定的粉紅色設(shè)置了HSV值,這就是輸出只有特定粉紅色的原因。您可以選擇要檢測的任何特定顏色值。
結(jié)論本文我們實(shí)現(xiàn)了一個(gè)濾波器,可以檢測我們指定特定顏色的物體。我們所做的只是圖像處理和目標(biāo)檢測的一個(gè)非常基本的介紹性任務(wù)。近年來,計(jì)算機(jī)視覺領(lǐng)域有了很大的發(fā)展,其中大部分都包含了機(jī)器學(xué)習(xí)和深度學(xué)習(xí)技術(shù)。在許多項(xiàng)目中,對象檢測是首先執(zhí)行的基本任務(wù),因?yàn)樗鼮槲覀兲峁┝擞嘘P(guān)環(huán)境的信息,我們可以根據(jù)使用情況進(jìn)行過濾。
參考引用Implementing colour and shape-based object detection and tracking with OpenCV.

請輸入評論內(nèi)容...
請輸入評論/評論長度6~500個(gè)字
最新活動更多
-
3月27日立即報(bào)名>> 【工程師系列】汽車電子技術(shù)在線大會
-
4月30日立即下載>> 【村田汽車】汽車E/E架構(gòu)革新中,新智能座艙挑戰(zhàn)的解決方案
-
5月15-17日立即預(yù)約>> 【線下巡回】2025年STM32峰會
-
即日-5.15立即報(bào)名>>> 【在線會議】安森美Hyperlux™ ID系列引領(lǐng)iToF技術(shù)革新
-
5月15日立即下載>> 【白皮書】精確和高效地表征3000V/20A功率器件應(yīng)用指南
-
5月16日立即參評 >> 【評選啟動】維科杯·OFweek 2025(第十屆)人工智能行業(yè)年度評選
推薦專題
- 1 UALink規(guī)范發(fā)布:挑戰(zhàn)英偉達(dá)AI統(tǒng)治的開始
- 2 北電數(shù)智主辦酒仙橋論壇,探索AI產(chǎn)業(yè)發(fā)展新路徑
- 3 “AI寒武紀(jì)”爆發(fā)至今,五類新物種登上歷史舞臺
- 4 降薪、加班、裁員三重暴擊,“AI四小龍”已折戟兩家
- 5 國產(chǎn)智駕迎戰(zhàn)特斯拉FSD,AI含量差幾何?
- 6 光計(jì)算迎來商業(yè)化突破,但落地仍需時(shí)間
- 7 東陽光:2024年扭虧、一季度凈利大增,液冷疊加具身智能打開成長空間
- 8 地平線自動駕駛方案解讀
- 9 封殺AI“照騙”,“淘寶們”終于不忍了?
- 10 優(yōu)必選:營收大增主靠小件,虧損繼續(xù)又逢關(guān)稅,能否乘機(jī)器人東風(fēng)翻身?