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)文章
PIL對(duì)上傳到Django的圖片進(jìn)行處理并保存的實(shí)例
今天小編就為大家分享一篇PIL對(duì)上傳到Django的圖片進(jìn)行處理并保存的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08
Python+Selenium鍵盤(pán)鼠標(biāo)模擬事件操作詳解
這篇文章主要帶大家一起學(xué)習(xí)一下Selenium的元素的基本操作與鼠標(biāo)鍵盤(pán)模擬事件的操作,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-06-06
Python Charles抓包配置實(shí)現(xiàn)流程圖解
這篇文章主要介紹了Python Charles抓包實(shí)現(xiàn)流程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
Python實(shí)現(xiàn)Mysql數(shù)據(jù)統(tǒng)計(jì)及numpy統(tǒng)計(jì)函數(shù)
這篇文章主要介紹了Python實(shí)現(xiàn)Mysql數(shù)據(jù)統(tǒng)計(jì)的實(shí)例代碼,給大家介紹了Python數(shù)據(jù)分析numpy統(tǒng)計(jì)函數(shù)的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07
django用戶登錄和注銷(xiāo)的實(shí)現(xiàn)方法
這篇文章主要介紹了django用戶登錄和注銷(xiāo)的實(shí)現(xiàn)方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
使用BeeWare實(shí)現(xiàn)iOS調(diào)用Python方式
這篇文章主要介紹了使用BeeWare實(shí)現(xiàn)iOS調(diào)用Python方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12

