如何将OpenCV中SIFT关键点的橙色圆形绘制样式改为橙色加号?
将SIFT关键点从橙色圆形改为橙色加号的实现方法
嗨,你原来的代码里用OpenCV默认方式绘制了圆形的SIFT关键点,要改成加号其实很容易——因为cv.drawKeypoints没有直接提供加号样式的选项,我们可以手动遍历每个关键点,用线段绘制十字(加号)。下面是调整后的完整可运行代码:
修改后的代码
import cv2 as cv img = cv.imread("my_img.jpg") sift = cv.SIFT_create() keypoints, descriptors = sift.detectAndCompute(img, None) # 复制原图作为绘制画布,避免修改原图 img_kp = img.copy() # 你指定的橙色RGB值 plus_color = (120, 157, 187) # 控制加号的线条长度,可根据需求调整 plus_length = 6 # 控制加号线条的粗细,默认1,数值越大越粗 line_thickness = 1 # 逐个遍历关键点,绘制加号 for kp in keypoints: # 关键点坐标是浮点型,转换为整数才能用于绘制 x, y = int(kp.pt[0]), int(kp.pt[1]) # 绘制水平线段(组成加号的一横) cv.line(img_kp, (x - plus_length, y), (x + plus_length, y), plus_color, line_thickness) # 绘制垂直线段(组成加号的一竖) cv.line(img_kp, (x, y - plus_length), (x, y + plus_length), plus_color, line_thickness) # 保存绘制好的结果 cv.imwrite("img.jpg", img_kp)
补充说明
- 修正了你原代码里的小错误:原代码中
cv.drawKeypoints里用了未定义的kp变量,正确的应该是keypoints - 你可以通过调整
plus_length来改变加号的大小,数值越大,加号的线条越长 - 如果想要更粗的加号,只需增大
line_thickness参数的数值即可
内容的提问来源于stack exchange,提问作者Liana Olianov
相关产品推荐
相关产品推荐

