我有两种不同类型的图像(由于声誉我无法发布,因此已链接它们。):
我试图使用OpenCV和Python从图像中提取手部特征。哪种看起来像这样:
import cv2
image = cv2.imread('image.jpg')
blur = cv2.GaussianBlur(image, (5,5), 0)
gray = cv2.cvtColor(blur, cv2.COLOR_BGR2GRAY)
retval, thresh1 = cv2.threshold(gray, 70, 255, / cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)
cv2.imshow('image', thresh1)
cv2.waitKey(0)
结果如下:
第二张图像的背景变化使cv2.threshold()
函数混乱,并且无法正确放置皮肤部位。有办法做到这一点吗?
作为后续问题,提取手部特征的最佳方法是什么?我尝试了HaaR级联,但没有真正得到结果吗?我应该训练自己的瀑布吗?我还有什么其他选择?
答案 0 :(得分:0)
基于两个图像的样本大小很难说,但是我会尝试使用OpenCV的Integral Channel Features(ChnFtrs),就像增压的Haar功能一样,它可以从颜色以及任何其他图像通道中获取线索乐于创建和提供。
经过正确训练的ChnFtrs级联(或多个)可能会为您提供手的边界框,这将有助于提取手的轮廓,但不能在同一边界框内排除无效轮廓。大多数其他对象检测例程也会遇到此问题。
另一个可能比ChnFtrs更好/更简单的选择是LINEMOD(我的当前最爱)。它的优点是不需要复杂的培训过程,也不需要任何培训时间。