Python 如何在hsv中选择良好的上限和下限?
我想检测花粉粒,但我正在生成的检测面具不起作用。以下是我得到的结果: 原始图像: HSV图像: 非工作遮罩: 首先,我将RGB图像转换为HSV。然后,我搜索目标轮廓。我无法使用Python 如何在hsv中选择良好的上限和下限?,python,opencv,image-processing,rgb,hsv,Python,Opencv,Image Processing,Rgb,Hsv,我想检测花粉粒,但我正在生成的检测面具不起作用。以下是我得到的结果: 原始图像: HSV图像: 非工作遮罩: 首先,我将RGB图像转换为HSV。然后,我搜索目标轮廓。我无法使用cv.findcontours函数。如果你有另一个解决方案的想法,它会很有帮助。我还想计算花粉粒的数量 import cv2 as cv import numpy as np def rgb2hsv(rgb): """ Input: imagen RGB Output: i
cv.findcontours
函数。如果你有另一个解决方案的想法,它会很有帮助。我还想计算花粉粒的数量
import cv2 as cv
import numpy as np
def rgb2hsv(rgb):
"""
Input: imagen RGB
Output: imagen HSV
"""
rgb = np.float32(rgb)/255
R=rgb[:,:,0]
G=rgb[:,:,1]
B=rgb[:,:,2]
rows,cols=R.shape
Cmax=np.maximum(np.maximum(R,G),B)
Cmin=np.minimum(np.minimum(R,G),B)
delta= np.subtract(Cmax,Cmin)
#print('delta:',delta)
#Calculate Hue
def hue(R,G,B):
H= np.zeros((rows,cols),dtype=float)
for row in range(rows):
for col in range(cols):
if (Cmax[row,col]==0):
H[row,col]=0
elif (Cmax[row,col]==R[row,col]):
H[row,col]=60*(((G[row,col]-B[row,col])/delta[row,col])%6)
elif (Cmax[row,col]==G[row,col]):
H[row,col]=60*(((B[row,col]-R[row,col])/delta[row,col])+2)
elif (Cmax[row,col]==B[row,col]):
H[row,col]=60*(((R[row,col]-G[row,col])/delta[row,col])+4)
return H
#Calculate Saturation
def saturation(Cmax,delta):
S= np.zeros((rows,cols),dtype=float)
for row in range(rows):
for col in range(cols):
if (Cmax[row,col]==0):
S[row,col]=0;
else:
S[row,col]=delta[row,col]/Cmax[row,col]
return S
#Calculate Value
V = Cmax.astype(np.float64)
hsv=cv.merge((hue(R,G,B),saturation(Cmax,delta),V))
return hsv
img = cv.imread('pollengrains.jpeg', 1)
cv.imshow('original', img)
hsv = rgb2hsv(img)
cv.imshow('hsv',hsv)
cv.imwrite('hsv.jpg',hsv*255)
mask = cv.inRange(hsv, (148,18,59),(168,38,139))
cv.imshow('mask',mask)
cv.imwrite('mask.jpg',mask*255)
cv.waitKey(0)
cv.destroyAllWindows()
在HSV颜色空间中使用Python GUI点选择器。搜索谷歌或这个论坛。我看过一些代码,但是一个点选取器只生成三个数字,我用两个元组选择一个H,S,V颜色作为低颜色,另一个H,S,V颜色作为高颜色。请参阅并在HSV颜色空间中使用Python GUI点选择器。搜索谷歌或这个论坛。我看过一些代码,但是一个点选取器只生成三个数字,我用两个元组选择一个H,S,V颜色作为低颜色,另一个H,S,V颜色作为高颜色。查看和