gpt4 book ai didi

opencv - 便签的对象检测

转载 作者:行者123 更新时间:2023-12-02 17:13:39 25 4
gpt4 key购买 nike

我正在尝试使用对象检测来识别视频提要中的便利贴。我正在使用emguCV进行检测。我尝试使用“形状检测”方法,但无法识别它的位置……也许是因为我将它举在空中,所以我的手指阻塞了顶点。

我也尝试过使用SURF检测,但是我猜这没用,因为它是正方形的,因此没有任何突出的功能。

我尝试使用HAAR / LBP分类,但是只花了10多个小时就只训练了48个阳性和80个阴性的一个阶段,所以我放弃了。

无论如何,能否建议一种用于检测/识别视频供稿中的便签纸的合适方法?将不胜感激。

最佳答案

我最近有一个类似的问题,这就是我解决的方法。我只是使用HSV频谱中的便签颜色来定位它。您只需要选择一种易于识别且在 Angular 下变化不大的颜色即可。

我使用此代码来控制带有2条便利贴的AR无人机,因此它必须可靠且快速。 Here it is in action。希望能帮助到你。

def centerFromImage(image, hue_min, hue_max):
image = cv2.cvtColor(image, cv2.cv.CV_RGB2HSV)
hue = image[:, :, 0]

# Filter out green postit note color
# yellow is 90-100
# pink is 137-150
# green is 80-90
hue[hue < hue_min] = 0
hue[hue > hue_max] = 0
hue[hue > 0] = 255

hue = cv2.erode(hue, None, iterations=2)
hue = cv2.dilate(hue, None, iterations=2)

contours, hierarchy = cv2.findContours(
hue,
cv2.RETR_LIST,
cv2.CHAIN_APPROX_SIMPLE
)

center = [0, 0]

if len(contours) > 0:
contour = contours[0]
area = cv2.contourArea(contour)

for c in contours:
if cv2.contourArea(c) > area:
area = cv2.contourArea(c)
contour = c

m = cv2.moments(contour)
center = [0, 0]
if m['m00'] != 0:
center = [m['m10'] / m['m00'], m['m01'] / m['m00']]

center = [int(center[0]), int(center[1])]

return center

关于opencv - 便签的对象检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21754866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com