參考:
hsl(powerpoint中顏色模式之一)即色相、飽和度、亮度(英語:hue, saturation, lightness)。hsv(opencv中的顏色模式)即色相、飽和度、明度(英語:hue, saturation, value),又稱hsb,其中b即英語:brightness。
由於這裡使用opencv,所以暫時只關注hsv
opencv中的hsv changing colorspaces:
green = np.uint8([[
[0,255,0
]]])
hsv_green = cv.cvtcolor(green,cv.color_bgr2hsv)
# 所以cvtcolor函式不僅可以用來處理影象 也可以處理簡單的乙個數值變數
print
( hsv_green )[[
[60255255]]
]
inrange函式使用:
import cv2
import numpy as np
cap = cv2.videocapture(0)
while(1
):# take each frame
_, frame = cap.read(
)# convert bgr to hsv 將從bgr轉為hsv顏色模式
hsv = cv2.cvtcolor(frame, cv2.color_bgr2hsv)
# define range of blue color in hsv 定義要提取的顏色範圍(使用hsv表示)
lower_blue = np.array(
[110,50
,50])
upper_blue = np.array(
[130
,255
,255])
# bgr顏色表示 轉 hsv顏色表示 也可以使用 cvtcolor來表示
green = np.uint8([[
[0,255,0
]]])
hsv_green = cv.cvtcolor(green,cv.color_bgr2hsv)
# threshold the hsv image to get only blue colors
mask = cv2.inrange(hsv, lower_blue, upper_blue)
# bitwise-and mask and original image
res = cv2.bitwise_and(frame,frame, mask= mask)
cv2.imshow(
'frame'
,frame)
cv2.imshow(
'mask'
,mask)
cv2.imshow(
'res'
,res)
k = cv2.waitkey(5)
&0xff
if k ==27:
break
cv2.destroyallwindows(
)
參考: opencv-tutroal—image thresholding
自適應閾值:cv2.adaptivethreshold
官方文件-featuredetection-houghcircles()
注意:通常該功能可以很好地檢測圓心。 但是,它可能找不到正確的半徑。 您可以通過指定半徑範圍(minradius和maxradius)來輔助該功能。 或者,對於hough_gradient方法,您可以將maxradius設定為負數,以便僅在不進行半徑搜尋的情況下返回中心,並使用其他過程查詢正確的半徑。dp 累加器解析度與影象解析度的反比。 例如,如果dp = 1,則累加器具有與輸入影象相同的解析度。 如果dp = 2,則累加器的寬度和高度是其一半。 對於hough_gradient_alt,建議值為dp = 1.5,除非需要檢測到一些很小的圓圈。
mindist 檢測到的圓心之間的最小距離。 如果引數太小,則除了真實的圓圈外,還可能會錯誤地檢測到多個鄰居圓圈。 如果太大,可能會錯過一些圓圈。
param1 第乙個 方法特定的引數。 對於hough_gradient和hough_gradient_alt,它是傳遞給canny邊緣檢測器的兩個閾值中的較高閾值(較低的閾值則小兩倍)。 請注意,hough_gradient_alt使用scharr演算法來計算影象導數,因此閾值通常應較高,例如300或正常**和對比影象。
param2 第二種方法特定的引數。
minradius 圓的最小半徑
maxradius 圓的最大半徑。 if <= 0,則使用最大影象尺寸. if < 0, hough_gradient 只返回圓心座標而不返回半徑。hough_gradient_alt 則始終計算圓半徑
circles=cv2.houghcircles(binary,cv2.hough_gradient,4,
25,param1=
100,param2=
40,minradius=
8,maxradius=15)
# 注意看引數 測試的話 可以把引數卡的死一點
# dp =4 因為要檢測的圓比較小
# mindist 要檢測的圓之間圓心之間的距離 自己目測看吧 越準確越好。。。 如果這個值過大或者過小,會發現很多圓都偏移的厲害(這個演算法對設定的引數非常看重,有些地方明明沒有圓,只要設定了這個引數,有點的差不多的都給你畫出個圓來)
# param1 是跟著乙個教程走的
# param2 如果你的圖中的圓非常標準 這個數就可以大點,越大表示所要檢測的圓越標準
# minradius和maxradius就根據自己圖的實際情況來定就好
其中param1是根據 opencv #010 circle detection using hough transform 這個教程裡的設定的
參考:
我確實是個不怎麼愛吃苦巧克力的人,也是個精力有限的人,所以,我這輩子,只能一直溫暖照亮乙個人呀
那些不解風情的人,也許只是從根源上杜絕了外界的**,排除了對自己所熱愛的事物造成傷害的可能,多麼克制善良的人啊
OpenCV 圓與矩形識別
最近乙個專案用到了影象識別,之前從未接觸過opencv,經過各種找教程,終於是搞懂了一些。整個具體流程大概是獲取影象 影象二值化,灰度圖 cvtcolor 影象降噪 gaussianblur 輪廓識別 cvfindcontours 形狀判斷。大多數教程很專業,各種引數分析看不懂,經過各種搜尋終於是搞...
OpenCV之圓的檢測識別
整個具體流程大概是獲取影象 影象二值化,灰度圖 cvtcolor 影象降噪 gaussianblur 輪廓識別 cvfindcontours 形狀判斷 在識別圓方面,opencv有內建的方法即霍夫圓變化 houghcircles edges,circles,cv hough gradient,1.5...
python opencv提取複雜背景下的文字
簡要說明我的思路 1.我的比較小,先放大。2.灰度處理。3.找到乙個區間值,對初步提取的文字進行膨脹及二次膨脹取輪廓。4。獲取到的輪廓面積,因為我這裡是固定的取裡4個文字,所以我對比取輪廓面積最大的4個 4.最後獲取輪廓的矩形座標點,採用透視變換生成字型 最後還有一些優化的地方 提取 import ...