python opencv檢測(cè)目標(biāo)顏色的實(shí)例講解
實(shí)例如下所示:
# -*- coding:utf-8 -*- __author__ = 'kingking' __version__ = '1.0' __date__ = '14/07/2017' import cv2 import numpy as np import time if __name__ == '__main__': Img = cv2.imread('example.png')#讀入一幅圖像 kernel_2 = np.ones((2,2),np.uint8)#2x2的卷積核 kernel_3 = np.ones((3,3),np.uint8)#3x3的卷積核 kernel_4 = np.ones((4,4),np.uint8)#4x4的卷積核 if Img is not None:#判斷圖片是否讀入 HSV = cv2.cvtColor(Img, cv2.COLOR_BGR2HSV)#把BGR圖像轉(zhuǎn)換為HSV格式 ''' HSV模型中顏色的參數(shù)分別是:色調(diào)(H),飽和度(S),明度(V) 下面兩個(gè)值是要識(shí)別的顏色范圍 ''' Lower = np.array([20, 20, 20])#要識(shí)別顏色的下限 Upper = np.array([30, 255, 255])#要識(shí)別的顏色的上限 #mask是把HSV圖片中在顏色范圍內(nèi)的區(qū)域變成白色,其他區(qū)域變成黑色 mask = cv2.inRange(HSV, Lower, Upper) #下面四行是用卷積進(jìn)行濾波 erosion = cv2.erode(mask,kernel_4,iterations = 1) erosion = cv2.erode(erosion,kernel_4,iterations = 1) dilation = cv2.dilate(erosion,kernel_4,iterations = 1) dilation = cv2.dilate(dilation,kernel_4,iterations = 1) #target是把原圖中的非目標(biāo)顏色區(qū)域去掉剩下的圖像 target = cv2.bitwise_and(Img, Img, mask=dilation) #將濾波后的圖像變成二值圖像放在binary中 ret, binary = cv2.threshold(dilation,127,255,cv2.THRESH_BINARY) #在binary中發(fā)現(xiàn)輪廓,輪廓按照面積從小到大排列 contours, hierarchy = cv2.findContours(binary,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE) p=0 for i in contours:#遍歷所有的輪廓 x,y,w,h = cv2.boundingRect(i)#將輪廓分解為識(shí)別對(duì)象的左上角坐標(biāo)和寬、高 #在圖像上畫(huà)上矩形(圖片、左上角坐標(biāo)、右下角坐標(biāo)、顏色、線條寬度) cv2.rectangle(Img,(x,y),(x+w,y+h),(0,255,),3) #給識(shí)別對(duì)象寫(xiě)上標(biāo)號(hào) font=cv2.FONT_HERSHEY_SIMPLEX cv2.putText(Img,str(p),(x-10,y+10), font, 1,(0,0,255),2)#加減10是調(diào)整字符位置 p +=1 print '黃色方塊的數(shù)量是',p,'個(gè)'#終端輸出目標(biāo)數(shù)量 cv2.imshow('target', target) cv2.imshow('Mask', mask) cv2.imshow("prod", dilation) cv2.imshow('Img', Img) cv2.imwrite('Img.png', Img)#將畫(huà)上矩形的圖形保存到當(dāng)前目錄 while True: Key = chr(cv2.waitKey(15) & 255) if Key == 'q': cv2.destroyAllWindows() break
原始圖像
處理之后保存的圖像
以上這篇python opencv檢測(cè)目標(biāo)顏色的實(shí)例講解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Python+OpenCV目標(biāo)跟蹤實(shí)現(xiàn)基本的運(yùn)動(dòng)檢測(cè)
- Python Opencv任意形狀目標(biāo)檢測(cè)并繪制框圖
- OpenCV實(shí)現(xiàn)幀差法檢測(cè)運(yùn)動(dòng)目標(biāo)
- OpenCV+python實(shí)現(xiàn)實(shí)時(shí)目標(biāo)檢測(cè)功能
- 基于深度學(xué)習(xí)和OpenCV實(shí)現(xiàn)目標(biāo)檢測(cè)
- OpenCV實(shí)現(xiàn)車(chē)輛識(shí)別和運(yùn)動(dòng)目標(biāo)檢測(cè)
- 如何使用Python和OpenCV進(jìn)行實(shí)時(shí)目標(biāo)檢測(cè)實(shí)例詳解
相關(guān)文章
Python中pycharm編輯器界面風(fēng)格修改方法
這篇文章主要介紹了Python中pycharm編輯器界面風(fēng)格修改方法,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03圖片去摩爾紋簡(jiǎn)述實(shí)現(xiàn)python代碼示例
這篇文章主要為大家介紹了圖片去摩爾紋簡(jiǎn)述實(shí)現(xiàn)的python代碼示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02Python+OpenCV繪制多instance的Mask圖像
Mask圖像中,不同值表示不同的實(shí)例(instance)。本文將詳細(xì)為大家講講如何利用OpenCV繪制多instance的Mask圖像,感興趣的可以學(xué)習(xí)一下2022-06-06wxPython中l(wèi)istbox用法實(shí)例詳解
這篇文章主要介紹了wxPython中l(wèi)istbox用法,以實(shí)例形式較為詳細(xì)的分析了Python使用wxPython中l(wèi)istbox的相關(guān)技巧,需要的朋友可以參考下2015-06-06Python利用zhdate模塊實(shí)現(xiàn)農(nóng)歷日期處理
zhdate模塊統(tǒng)計(jì)從1900年到2100年的農(nóng)歷月份數(shù)據(jù)代碼,支持農(nóng)歷和公歷之間的轉(zhuǎn)化,并且支持日期差額運(yùn)算。本文將利用這一模塊實(shí)現(xiàn)農(nóng)歷日期的處理,需要的可以參考一下2022-03-03PyTorch中的方法torch.randperm()示例介紹
在 PyTorch 中,torch.randperm(n) 函數(shù)用于生成一個(gè)從 0 到 n-1 的隨機(jī)排列的整數(shù)序列,這篇文章主要介紹了PyTorch中的方法torch.randperm()介紹,需要的朋友可以參考下2024-05-05文件上傳服務(wù)器-jupyter 中python解壓及壓縮方式
這篇文章主要介紹了文件上傳服務(wù)器-jupyter 中python解壓及壓縮方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04Python?echarts實(shí)現(xiàn)數(shù)據(jù)可視化實(shí)例詳解
這篇文章主要為大家詳細(xì)介紹了Python?echarts實(shí)現(xiàn)數(shù)據(jù)可視化,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-03-03