# -*- 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影象轉換為hsv格式
'''hsv模型中顏色的引數分別是:色調(h),飽和度(s),明度(v)
下面兩個值是要識別的顏色範圍
'''lower = np.array([20, 20, 20])#要識別顏色的下限
upper = np.array([30, 255, 255])#要識別的顏色的上限
#mask是把hsv中在顏色範圍內的區域變成白色,其他區域變成黑色
mask = cv2.inrange(hsv, lower, upper)
#下面四行是用卷積進行濾波
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是把原圖中的非目標顏色區域去掉剩下的影象
target = cv2.bitwise_and(img, img, mask=dilation)
#將濾波後的影象變成二值影象放在binary中
ret, binary = cv2.threshold(dilation,127,255,cv2.thresh_binary)
#在binary中發現輪廓,輪廓按照面積從小到大排列
p=0for i in contours:#遍歷所有的輪廓
x,y,w,h = cv2.boundingrect(i)#將輪廓分解為識別物件的左上角座標和寬、高
#在影象上畫上矩形(、左上角座標、右下角座標、顏色、線條寬度)
cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,),3)
#給識別物件寫上標號
font=cv2.font_hershey_******x
cv2.puttext(img,str(p),(x-10,y+10), font, 1,(0,0,255),2)#加減10是調整字元位置
p +=1
print '黃色方塊的數量是',p,'個'#終端輸出目標數量
cv2.imshow('target', target)
cv2.imshow('mask', mask)
cv2.imshow("prod", dilation)
cv2.imshow('img', img)
cv2.imwrite('img.png', img)#將畫上矩形的圖形儲存到當前目錄
while true:
key = chr(cv2.waitkey(15) & 255)
if key == 'q':
cv2.destroyallwindows()
break
原始影象
處理之後儲存的影象
python opencv 輪廓檢測
輪廓 contours 指的是有相同顏色或者密度,連線所有連續點的一條曲線。檢測輪廓的工作對形狀分析和物體檢測與識別都非常有用。在輪廓檢測之前,首先要對進行二值化或者canny邊緣檢測。在opencv中,尋找的物體是白色的,而背景必須是黑色的,因此預處理時必須保證這一點。import cv2 讀入i...
Python OpenCV人臉檢測
在 opencv根目錄 sources data haarcascades中提供了很多訓練好的分類器,我們使用haarcascade frontalface alt.xml分類器。haar cascade是paul viola和 michael jone在2001年,rapid object det...
python opencv 邊緣檢測
canny邊緣檢測器是一種被廣泛使用的演算法,並被認為是邊緣檢測最優的演算法,該方法使用了比高斯差分演算法更複雜的技巧,如多向灰度梯度和滯後閾值化 平滑影象 使用高斯濾波器與影象進行卷積,平滑影象,以減少邊緣檢測器上明顯的雜訊影響 計算影象的梯度和方向 影象中的邊緣可以指向各個方向,這裡計算影象的梯...