opencv - OpenCV-仅显示关键点而不使用SIFT显示图像

标签 opencv image-processing sift keypoint

我尝试使用以下示例代码仅 绘制关键点(图像而不绘制):

import cv2
import numpy as np

img = cv2.imread('test.png')
gray= cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

sift = cv2.SIFT()
kp = sift.detect(gray,None)

img=cv2.drawKeypoints(gray,kp)

cv2.imwrite('sift_keypoints.jpg',img)

我尝试了cv2.drawKeypoints(None,kp)cv2.drawKeypoints(kp),但无济于事。

有什么想法可以实现吗?

谢谢。

最佳答案

通过在原始图像具有 SAME 形状的纯黑色图像上绘制关键点,可以仅获得 关键点。

这是我使用的图像:

enter image description here

然后,我获得了关键点:

enter image description here

然后,我创建了具有与原始图像相同大小的纯色(黑色)图像,并在其上绘制了这些关键点。

enter image description here

Voila仅关键点

码:

#---Creating image of solid color with same size as image---
mask = np.zeros((img.shape[0], img.shape[1], 3), np.uint8)
mask[:] = (0, 0, 0) 

#---Drawing keypoints on the mask image---
fmask = cv2.drawKeypoints(mask,kp,None,color=(0,255,0), flags=0)
cv2.imshow('fmask.jpg', fmask)

关于opencv - OpenCV-仅显示关键点而不使用SIFT显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22375430/

相关文章:

opencv - 检测视频帧中的现实世界对象

php - 如何在使用 PHP 将图像上传到服务器时将文件名与其他信息一起存储在数据库中?

algorithm - 如何将图像中的对象与背景分开?

opencv - 筛选与冲浪。哪个更准确?

algorithm - 文本的高效移位不变特征变换

multithreading - Hadoop 可以减少 SIFT 的运行时间吗?

c++ - OpenCV:C++ API 和 C API 在功能或速度上有区别吗?

c++ - 使用 OpenCV 获得更好的性能?

android - 具有Android Studio的OpenCV

image-processing - ImageMagick:将灰色提升为 CMYK 黑色?