Python OpenCV中的圖像處理物體跟蹤效果
更新時間:2023年08月10日 11:34:28 作者:SongYuLong的博客
我們知道怎樣將一幅圖像從 BGR 轉換到 HSV 了,我們可以利用這一點來提取帶有某個特定顏色的物體,這篇文章主要介紹了Python OpenCV中的圖像處理物體跟蹤,需要的朋友可以參考下
Python-OpenCV中的圖像處理-物體跟蹤
物體跟蹤
現(xiàn)在我們知道怎樣將一幅圖像從 BGR 轉換到 HSV 了,我們可以利用這一點來提取帶有某個特定顏色的物體。在 HSV 顏色空間中要比在 BGR 空間中更容易表示一個特定顏色。在我們的程序中,我們要提取的是一個藍色的物體。下面就是就是我們要做的幾步:
• 從視頻中獲取每一幀圖像
• 將圖像轉換到 HSV 空間
• 設置 HSV 閾值到藍色范圍。
• 獲取藍色物體,當然我們還可以做其他任何我們想做的事,比如:在藍色
物體周圍畫一個圈。
import numpy as np
import cv2
# cv2.cvtColor(img, flag)
# cv2.inRange()
# 打印顏色轉換flag
flags =[ i for i in dir(cv2) if i.startswith('COLOR_')]
print(flags)
# OpenCV支持超過150種顏色轉換的方法,常用:BGR<->GRAY 和 BGR<->HSV
# OpenCV的HSV格式中,H(色彩/色度)的取值范圍是[0, 179], S(飽和度)的取值范圍[0, 255], V(亮度)的取值范圍[0, 255]
# 不同軟件取值范圍可能不同,使用時需要做歸一化
# 物體跟蹤,跟蹤一個藍色物體,步驟:
# 1.從視頻中獲取一幀圖像
# 2.將圖像轉換到HSV空間
# 3.設置HSV閥值到藍色范圍
# 4.獲取藍色物體,或其他處理
cap = cv2.VideoCapture(0)
while True:
# 獲取圖像幀
(ret, frame) = cap.read()
# 轉換到HSV顏色空間
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
# 設定藍色的閥值
lower_blue = np.array([110, 50, 50])
upper_blue = np.array([130, 255, 255])
# 根據閥值構建掩膜
mask = cv2.inRange(hsv, lower_blue, upper_blue)
mask_blue = cv2.medianBlur(mask, 7) # 中值濾波
# 查找輪廓
contours, hierarchy = cv2.findContours(mask_blue, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
# print(contours, hierarchy)
for cnt in contours:
(x, y, w, h) = cv2.boundingRect(cnt)
cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(frame, "Blue", (x, y - 5), font, 0.7, (0, 255, 0), 2)
# 對原圖和掩膜進行位運算
res =cv2.bitwise_and(frame, frame, mask=mask)
# 顯示圖像
cv2.imshow('frame', frame)
cv2.imshow('mask', mask)
cv2.imshow('res', res)
k = cv2.waitKey(5)&0xFF
if k == 27:
break
cap.release()
cv2.destroyAllWindows()
到此這篇關于Python OpenCV中的圖像處理物體跟蹤的文章就介紹到這了,更多相關Python OpenCV物體跟蹤內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python報錯no?module?named?torch的幾種原因及解決方案
這篇文章主要給大家介紹了關于Python報錯no?module?named?torch的幾種原因及解決方案,這是小白時常犯的錯,這個報錯一般說明在你電腦當前環(huán)境下沒有安裝torch這個模塊,但也有其他情況,需要的朋友可以參考下2023-10-10

