跳到主要內容

50行Python代碼實現視頻中物體顏色識別和跟蹤(必須以紅色為例)

目前計算機視覺(CV)與自然語言處理(NLP)及語音識別並列為人工智能三大熱點方向,而計算機視覺中的對象檢測(objectdetection)應用非常廣泛,比如自動駕駛、視頻監控、工業質檢、醫療診斷等場景。

目標檢測的根本任務就是將圖片或者視頻中感興趣的目標提取出來,目標的識別可以基於顏色、紋理、形狀。其中顏色屬性運用十分廣泛,也比較容易實現。下面就向大家分享一個我做的小實驗———通過OpenCV的Python接口來實現從視頻中進行顏色識別和跟蹤。



下面就是我們完整的代碼實現(已調試運行):


import numpy as np
import cv2
font = cv2.FONT_HERSHEY_SIMPLEX
lower_green = np.array([35, 110, 106]) # 綠色範圍低閾值
upper_green = np.array([77, 255, 255]) # 綠色範圍高閾值
lower_red = np.array([0, 127, 128]) # 紅色範圍低閾值
upper_red = np.array([10, 255, 255]) # 紅色範圍高閾值
#需要更多顏色,可以去百度一下HSV閾值!
# cap = cv2.VideoCapture('1.mp4') # 打開視頻文件
cap = cv2.VideoCapture(0)#打開USB攝像頭
if (cap.isOpened()): # 視頻打開成功
flag = 1
else:
flag = 0
num = 0
if (flag):
while (True):
ret, frame = cap.read() # 讀取一幀

if ret == False: # 讀取幀失敗
break
hsv_img = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
mask_green = cv2.inRange(hsv_img, lower_green, upper_green) # 根據顏色範圍刪選
mask_red = cv2.inRange(hsv_img, lower_red, upper_red)
# 根據顏色範圍刪選
mask_green = cv2.medianBlur(mask_green, 7) # 中值濾波
mask_red = cv2.medianBlur(mask_red, 7) # 中值濾波
mask = cv2.bitwise_or(mask_green, mask_red)
mask_green, contours, hierarchy = cv2.findContours(mask_green, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
mask_red, contours2, hierarchy2 = cv2.findContours(mask_red, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)

for cnt in contours:
(x, y, w, h) = cv2.boundingRect(cnt)
cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 255), 2)
cv2.putText(frame, "Green", (x, y - 5), font, 0.7, (0, 255, 0), 2)

for cnt2 in contours2:
(x2, y2, w2, h2) = cv2.boundingRect(cnt2)
cv2.rectangle(frame, (x2, y2), (x2 + w2, y2 + h2), (0, 255, 255), 2)
cv2.putText(frame, "Red", (x2, y2 - 5), font, 0.7, (0, 0, 255), 2)
num = num + 1
cv2.imshow("dection", frame)
cv2.imwrite("imgs/%d.jpg"%num, frame)
if cv2.waitKey(20) & 0xFF == 27:
break
cv2.waitKey(0)
cv2.destroyAllWindows()

如圖所示,我們將會檢測到紅色區域



最終的效果圖:



本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能



※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享



※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選



台灣海運大陸貨務運送流程



兩岸物流進出口一站式服務




Orignal From: 50行Python代碼實現視頻中物體顏色識別和跟蹤(必須以紅色為例)

留言

這個網誌中的熱門文章

掃地機器人可以隨身帶上飛機嗎?我想要拿去送給國外的朋友

掃地機器人如果要隨身戴上飛機需要滿足兩個條件: 一個是掃地機器人連同你的隨身行李,整體的體積和重量要符合上機條件,這個具體每家航空公司都不同,可以諮詢,簡單的說就是隨身行李不要超寬超重。 還有一個就是由於掃地機器人內置了鋰電池,所以內置電池的容量要符合相關規定,每個掃地機器人電池容量都不同,具體自行查詢。 根據民航的相關安全要求,凡帶有鋰電池的電子設備均不可以托運,但符合重量要求,尺寸要求以及電量要求的鋰電池及其設備是可以帶上飛機的。 《鋰電池航空運輸規範》中內含鋰離子電池的設備電池額定能量不應超過100Wh的規定,符合國標GB31241-2014,並通過UN38.3航空運輸認證等國際安全標準,所以可以帶上飛機。但是不能托運,只能隨身攜帶。 掃地機器人     掃地機器人     掃地機器人吸塵器 http://www.greenh3y.com/?p=400 Orignal From: 掃地機器人可以隨身帶上飛機嗎?我想要拿去送給國外的朋友

垃圾是怎樣產生的

是指人類在生產、消費、生活和其他活動中產生的固態、半固態廢棄物質(國外的定義則更加廣泛,動物活動產生的廢棄物也屬於此類),主要包括固體顆粒、垃圾、爐渣、污泥、廢棄的製品、破損器皿、殘次品、動物屍體、變質食品、人畜糞便等。有些國家把廢酸、廢鹼、廢油、廢有機溶劑等高濃度的液體也歸為固體廢棄物。 新北垃圾清運     台北垃圾清運 http://www.greenh3y.com/?p=234 Orignal From: 垃圾是怎樣產生的

固體廢棄物的產生原因有甚麼呢?

所謂廢棄物,多指固體廢棄物或含多量固體的廢棄物,被丟棄的廢棄物有可能成為生產的原材料、燃料或消費物品,這是固體廢棄物資源化處理的基礎。 固體廢棄物的產生與排放,伴隨著人類社會還在延續,社會化生產的生產、分配、交換、消費環節都會產生廢棄物;產品生命週期的產品的規劃、設計、原材料採購、製造、包裝、運輸、分配和消費等環節也會產生固體廢棄物,即使是利用固體廢棄物進行逆生產及相應的逆向物流過程也同樣會產生固體廢棄物;土地使用的各功能區,住宅區、商業區、工業區、農業區、市政設施、文化娛樂區、戶外空地等都會產生固體廢棄物;全社會的任何個人、企事業單位、政府組織和社會組織都會產生並排放固體廢棄物。 人類活動產生固體廢棄物的主要原因有: 1)人類認識能力限制,導致自然環境破壞,如水土流失、森林破壞等; 2)參與規劃、設計、製造、運輸、消費、管理等活動的人員的技術水平限制,導致資源浪費,如機加工邊角邊料、不合格產品、不當使用致廢產品等; 3)物質變化規律限制,導致物品、物質功能的演變,如甘蔗渣、爐渣、尾礦等生產過程的副產品、報廢產品、腐變食物等; 4)追求自利、自保、奢侈、虛榮心等理性和非理性心理限制,導致資源浪費,如過度包裝、一次性用品、奢侈品等; 新北垃圾清運 台北垃圾清運 http://www.greenh3y.com/?p=183 Orignal From: 固體廢棄物的產生原因有甚麼呢?