您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關python如何實現簡單顏色識別程序的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
具體內容如下
import numpy as np import cv2 font= cv2.FONT_HERSHEY_SIMPLEX lower_red=np.array([0,127,128])#紅色閾值下界 higher_red=np.array([10,255,255])#紅色閾值上界 lower_green=np.array([35,110,106])#綠色閾值下界 higher_green=np.array([77,255,255])#綠色閾值上界 cap=cv2.VideoCapture(0)#打開電腦內置攝像頭 if(cap.isOpened()): while(True): ret,frame=cap.read()#按幀讀取,這是讀取一幀 img_hsv=cv2.cvtColor(frame,cv2.COLOR_BGR2HSV) mask_red=cv2.inRange(img_hsv,lower_red,higher_red)#可以認為是過濾出紅色部分,獲得紅色的掩膜 mask_green=cv2.inRange(img_hsv,lower_green,higher_green)#獲得綠色部分掩膜 mask_green = cv2.medianBlur(mask_green, 7) # 中值濾波 mask_red = cv2.medianBlur(mask_red, 7) # 中值濾波 mask=cv2.bitwise_or(mask_green,mask_red)#三部分掩膜進行按位或運算 image1,cnts1,hierarchy1=cv2.findContours(mask_red,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE)#輪廓檢測 image3,cnts3,hierarchy3=cv2.findContours(mask_green,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE) for cnt in cnts1: (x,y,w,h)=cv2.boundingRect(cnt)#該函數返回矩陣四個點 cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 0, 255), 2)#將檢測到的顏色框起來 cv2.putText(frame,'red',(x,y-5),font,0.7,(0,0,255),2) for cnt in cnts3: (x, y, w, h) = cv2.boundingRect(cnt) # 該函數返回矩陣四個點 cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2) # 將檢測到的顏色框起來 cv2.putText(frame, 'green', (x, y - 5), font, 0.7, (0,255,0), 2) cv2.imshow('frame',frame) k=cv2.waitKey(20)&0xFF if k ==27: break cv2.waitKey(0) cv2.destroyAllWindows()
我發現只要多于兩種顏色識別起來誤差就極大極大,等以后學到會回來進行優化的。目前識別兩種顏色還是比較穩的。
感謝各位的閱讀!關于“python如何實現簡單顏色識別程序”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。