python opencv檢測目標(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)
下面兩個值是要識別的顏色范圍
'''
Lower = np.array([20, 20, 20])#要識別顏色的下限
Upper = np.array([30, 255, 255])#要識別的顏色的上限
#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)#將輪廓分解為識別對象的左上角坐標(biāo)和寬、高
#在圖像上畫上矩形(圖片、左上角坐標(biāo)、右下角坐標(biāo)、顏色、線條寬度)
cv2.rectangle(Img,(x,y),(x+w,y+h),(0,255,),3)
#給識別對象寫上標(biā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,'個'#終端輸出目標(biāo)數(shù)量
cv2.imshow('target', target)
cv2.imshow('Mask', mask)
cv2.imshow("prod", dilation)
cv2.imshow('Img', Img)
cv2.imwrite('Img.png', Img)#將畫上矩形的圖形保存到當(dāng)前目錄
while True:
Key = chr(cv2.waitKey(15) & 255)
if Key == 'q':
cv2.destroyAllWindows()
break
原始圖像

處理之后保存的圖像

以上這篇python opencv檢測目標(biāo)顏色的實(shí)例講解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- Python+OpenCV目標(biāo)跟蹤實(shí)現(xiàn)基本的運(yùn)動檢測
- Python Opencv任意形狀目標(biāo)檢測并繪制框圖
- OpenCV實(shí)現(xiàn)幀差法檢測運(yùn)動目標(biāo)
- OpenCV+python實(shí)現(xiàn)實(shí)時目標(biāo)檢測功能
- 基于深度學(xué)習(xí)和OpenCV實(shí)現(xiàn)目標(biāo)檢測
- OpenCV實(shí)現(xiàn)車輛識別和運(yùn)動目標(biāo)檢測
- 如何使用Python和OpenCV進(jìn)行實(shí)時目標(biāo)檢測實(shí)例詳解
相關(guān)文章
Python中pycharm編輯器界面風(fēng)格修改方法
這篇文章主要介紹了Python中pycharm編輯器界面風(fēng)格修改方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03
圖片去摩爾紋簡述實(shí)現(xiàn)python代碼示例
這篇文章主要為大家介紹了圖片去摩爾紋簡述實(shí)現(xiàn)的python代碼示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
Python+OpenCV繪制多instance的Mask圖像
Mask圖像中,不同值表示不同的實(shí)例(instance)。本文將詳細(xì)為大家講講如何利用OpenCV繪制多instance的Mask圖像,感興趣的可以學(xué)習(xí)一下2022-06-06
wxPython中l(wèi)istbox用法實(shí)例詳解
這篇文章主要介紹了wxPython中l(wèi)istbox用法,以實(shí)例形式較為詳細(xì)的分析了Python使用wxPython中l(wèi)istbox的相關(guān)技巧,需要的朋友可以參考下2015-06-06
Python利用zhdate模塊實(shí)現(xiàn)農(nóng)歷日期處理
zhdate模塊統(tǒng)計從1900年到2100年的農(nóng)歷月份數(shù)據(jù)代碼,支持農(nóng)歷和公歷之間的轉(zhuǎn)化,并且支持日期差額運(yùn)算。本文將利用這一模塊實(shí)現(xiàn)農(nóng)歷日期的處理,需要的可以參考一下2022-03-03
PyTorch中的方法torch.randperm()示例介紹
在 PyTorch 中,torch.randperm(n) 函數(shù)用于生成一個從 0 到 n-1 的隨機(jī)排列的整數(shù)序列,這篇文章主要介紹了PyTorch中的方法torch.randperm()介紹,需要的朋友可以參考下2024-05-05
文件上傳服務(wù)器-jupyter 中python解壓及壓縮方式
這篇文章主要介紹了文件上傳服務(wù)器-jupyter 中python解壓及壓縮方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
Python?echarts實(shí)現(xiàn)數(shù)據(jù)可視化實(shí)例詳解
這篇文章主要為大家詳細(xì)介紹了Python?echarts實(shí)現(xiàn)數(shù)據(jù)可視化,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03

