You need to enable JavaScript to run this app.
最新活动
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

线条的聚类/抑制(NMS)

线条的聚类和抑制(Non-Maximum Suppression, NMS)是一种常用的计算机视觉算法,用于检测图像中的边缘或线条。下面是一个使用Python和OpenCV库实现线条聚类和抑制的示例代码:

import cv2
import numpy as np

def line_clustering(lines, threshold):
    clusters = []
    
    for line in lines:
        found_cluster = False
        
        for cluster in clusters:
            if abs(line[0] - cluster[0]) < threshold and abs(line[1] - cluster[1]) < threshold:
                cluster.append(line)
                found_cluster = True
                break
        
        if not found_cluster:
            clusters.append([line])
    
    return clusters

def nms(lines, overlap_threshold):
    lines = sorted(lines, key=lambda x: x[2], reverse=True)
    selected_lines = []
    
    while len(lines) > 0:
        best_line = lines[0]
        selected_lines.append(best_line)
        lines = lines[1:]
        
        remaining_lines = []
        for line in lines:
            overlap = min(best_line[3], line[3]) - max(best_line[2], line[2])
            if overlap <= 0:
                remaining_lines.append(line)
        
        lines = remaining_lines
    
    return selected_lines

# 读取图像并提取边缘
image = cv2.imread('image.jpg', 0)
edges = cv2.Canny(image, 50, 150)

# 提取直线
lines = cv2.HoughLinesP(edges, 1, np.pi/180, 100, minLineLength=100, maxLineGap=10)

# 进行线条聚类
threshold = 10
clusters = line_clustering(lines, threshold)

# 画出聚类后的线条
clustered_image = np.zeros_like(image)
for cluster in clusters:
    color = np.random.randint(0, 255, 3).tolist()
    for line in cluster:
        x1, y1, x2, y2 = line[0]
        cv2.line(clustered_image, (x1, y1), (x2, y2), color, 2)

# 进行非极大值抑制
overlap_threshold = 0.3
selected_lines = nms(lines, overlap_threshold)

# 画出抑制后的线条
nms_image = np.zeros_like(image)
for line in selected_lines:
    x1, y1, x2, y2 = line[0]
    cv2.line(nms_image, (x1, y1), (x2, y2), (255, 255, 255), 2)

# 显示图像
cv2.imshow('Original Image', image)
cv2.imshow('Edge Image', edges)
cv2.imshow('Clustered Image', clustered_image)
cv2.imshow('NMS Image', nms_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

请注意,以上代码仅为示例,实际应用中可能需要根据具体情况进行调整和优化。

本文内容通过AI工具匹配关键字智能整合而成,仅供参考,火山引擎不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系service@volcengine.com进行反馈,火山引擎收到您的反馈后将及时答复和处理。
展开更多
面向开发者的云福利中心,ECS 60元/年,域名1元起,助力开发者快速在云上构建可靠应用

社区干货

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

线条的聚类/抑制(NMS)-优选内容

为自定义模型创建版本
设置输出的物体聚类方式等。 通过创建前后处理版本,您可以提前定义好前处理和后处理的相关配置,这样方便您更灵活地在数据流中配置模型服务节点。在部署模型服务时,您可以选择同时部署一个前后处理版本。这样前后处理版本所携带的配置将和模型文件一起部署到一体机。后续您在数据流实例中配置模型服务节点时,无需再通过节点的控制参数来指定配置文件(config-file-path)、标签文件(labelfile_path)。 前提条件您已经创建了自定义模...
视频数据流节点
本文介绍了视频数据流编排中可供选择的输入、处理和输出节点。编排视频数据流的过程中,您可以参考本文了解不同节点的用途及其所包含控制参数的含义。 使用前须知视频数据流支持 DeepStream 框架和 DLStreamer(Beta) 框架。不同框架下可供使用的节点不同。您可以通过节点列表了解节点所适用的框架类型。注意 基于 DLStreamer 框架的视频数据流功能尚处于 Beta 阶段,仅适用于进行功能测试。如果您在使用过程中遇到问题,请通过工单向...

线条的聚类/抑制(NMS)-相关内容

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

产品体验

体验中心

云服务器特惠

云服务器
云服务器ECS新人特惠
立即抢购

白皮书

一图详解大模型
浓缩大模型架构,厘清生产和应用链路关系
立即获取

最新活动

爆款1核2G共享型服务器

首年60元,每月仅需5元,限量秒杀
立即抢购

火山引擎增长体验专区

丰富能力激励企业快速增长
查看详情

数据智能VeDI

易用的高性能大数据产品家族
了解详情

一键开启云上增长新空间

立即咨询