You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 17:37:38