在皮肤检测图像中找到指尖、面积和最大直径

2024-06-23 20:01:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个皮肤检测脚本,我从this tutorial.中获取,它工作得很好,但是现在我希望能够在找到的面具中找到感兴趣的点,例如1)一个指尖(如果从上面看,一个手指像食指一样伸出),2)最大直径和3)面积

以下是相关代码:

lower = np.array([0, 48, 80], dtype = "uint8")                      
upper = np.array([20, 255, 255], dtype = "uint8")                   

converted = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)                    
skinMask = cv2.inRange(converted, lower, upper)                     

kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (11, 11))        
skinMask = cv2.erode(skinMask, kernel, iterations = 2)              
skinMask = cv2.dilate(skinMask, kernel, iterations = 2)             

skinMask = cv2.GaussianBlur(skinMask, (3, 3), 0)                    
skin = cv2.bitwise_and(frame, frame, mask = skinMask)     

皮肤遮罩的形状是一个(640480)矩阵,其中每个检测到皮肤的点都是255,而其他点都是0


Tags: 脚本npthisarraycv2upperkernellower
1条回答
网友
1楼 · 发布于 2024-06-23 20:01:00

与皮肤检测类似,您可以创建过滤器来检测形状及其在图像中的相对位置。假设你拿一个10x10的矩阵,在里面画一条看起来像指尖的线。在应该有空格的地方使用0,在应该有指尖的地方使用大数字。在图像中开始一个0,0,然后应用10x10矩阵,得到和积,然后将它放入一个新的矩阵中的0,0。将过滤器移到一个像素上,然后再次运行。迭代整个图像,你的新矩阵(全部特征激活的网格)将显示形状的位置。新矩阵中的最大值可能是指尖所在的位置

这或多或少是卷积神经网络识别图像特征的方式,在你的案例中应该很容易应用。也许谷歌CNN如何识别特征使用过滤器卷积看到一些例子

相关问题 更多 >

    热门问题