gpt4 book ai didi

python - OpenCV - 仅绘制关键点使用python引用的对象

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

我能够检测到关键点和描述符

keypoints, des = surf.detectAndCompute(gray_image,None)

我能画出关键点
output_image = cv2.drawKeypoints(output_image, keypoints)

我能够从下图中找到仅与文本完全对应的关键点。我想让他们将文本复制到新图像上。

我怎样才能只绘制 keypoints 的对象?引用?

source image

这是关键点的输出
keypoints only

最终我希望只有关键点的图像有文本而不是关键点标记

最佳答案

看看这个方法。它不是那么整洁,但您可以根据自己的需要对其进行改进。

我使用 cv2.ORB_create() 在给定图像上获得了关键点,为此我得到了这个:

img = cv2.imread(filename,0)
orb = cv2.ORB_create()
kp = orb.detect(img,None)
kp, des = orb.compute(img, kp)

img2 = cv2.drawKeypoints(img,kp,None,color=(0,255,0), flags=0)
cv2.imshow('keypoint_on_text.jpg', img2)

enter image description here

您可以使用 surf以便更好地检测关键点。

然后我获得了一个具有与图像相同形状的纯色(在这种情况下为黑色)的图像。我在这张黑色图像上绘制了这些获得的关键点。
mask = np.zeros((img.shape[0], img.shape[1], 3), np.uint8)
mask[:] = (0, 0, 0)

fmask = cv2.drawKeypoints(mask,kp,None,color=(0,255,0), flags=0)
cv2.imshow('fmask.jpg', fmask)

enter image description here

现在我将其转换为灰度图像并应用阈值对其进行二值化。然后我在这张图片上找到了轮廓,并用更大的半径绘制了它们。
graymask = cv2.cvtColor(fmask,cv2.COLOR_BGR2GRAY)
ret, th = cv2.threshold(graymask, 50, 255, 0)
_, contours , _= cv2.findContours(th,2,1)
rep = cv2.drawContours(fmask, contours, -1, (0,255,0), 5)
cv2.imshow('contours.jpg',rep)

enter image description here

我将其转换为灰度,将其二值化并用原始图像对其进行 mask ,最终得到:
repmask = cv2.cvtColor(rep,cv2.COLOR_BGR2GRAY)
ret, th1 = cv2.threshold(repmask, 50, 255, 0)
res = cv2.bitwise_and(img,img,mask = th1)
cv2.imshow('Only_Text.jpg',res)

enter image description here

如您所见,所需文本的某些部分是可见的。如果您使用 surf检测,您将能够获得更多的文本部分。

关于python - OpenCV - 仅绘制关键点使用python引用的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42253126/

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