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

标签 python opencv

我有一个皮肤检测脚本,该脚本是从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)     

蒙皮的形状为(640,480)矩阵,其中检测到皮肤的每个点均为255,而其他每个点均为0。

最佳答案

与皮肤检测类似,您可以创建过滤器来检测形状及其在图像中的相对位置。假设您采用10x10的矩阵,并在其中绘制一条看起来像指尖的线。在应该有空格的地方使用0,在指尖应该使用大的数字。在图像中开始一个0,0并应用10x10矩阵,获得总和并将其乘以0,0到一个新的矩阵中。将滤镜移动一个像素以上,然后再次运行。遍历整个图像,新矩阵(整个功能激活的网格)将向您显示形状的位置。新矩阵中的最高数字可能在您的指尖所在的位置。

卷积神经网络或多或少地通过这种方式识别图像中的特征,并且在您的案例中应该很容易应用。也许谷歌搜索CNN如何使用卷积滤波器识别特征,以查看一些示例。

关于python - 在皮肤检测图像中找到指尖,面积和最大直径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53837473/

相关文章:

python - 一些字符串没有在 django i18n 模块中翻译

python - 遍历数据库端的表来比较bcrypt哈希后的密码

opencv - 在没有控制台窗口的情况下运行OpenCV应用程序

python - 使用 OpenCV 的 Python 和 C++ 计算基本矩阵的不同结果

python - 如何在 Python 中判断我是否在 Beowulf 集群上运行?

python - 使用 OpenCV python 和多线程运行两个视频

python - 如何覆盖导入的 Python 模块中的常量?

python - Python的OpenCV的cv2.KMEANS_RANDOM_CENTERS

java - OpenCV Java - 如何裁剪图像中检测到的圆圈

没有java的android NDK adb可执行文件