python opencv把普通的点集转换为KeyPoint类型

            cv_kpts1 = [cv2.KeyPoint(cv_kpts1[i][0], cv_kpts1[i][1], 1)
                        for i in range(cv_kpts1.shape[0])]
### 如何用 PythonOpenCV 实现 Blob 检测与分析 Blob 是二值图像中的连通区域,通常用于描述具有特定形状特征的目标对象。通过 OpenCV 的 `SimpleBlobDetector` 类可以轻松实现 Blob 检测并提取其属性。 以下是完整的解决方案: #### 1. 安装依赖库 确保已安装所需的库: ```bash pip install opencv-python-headless numpy ``` #### 2. 导入必要模块 导入 OpenCV 和 NumPy 库以便处理图像数据。 ```python import cv2 import numpy as np ``` #### 3. 创建 SimpleBlobDetector 对象 可以通过自定义参数来调整检测器的行为。例如设置最小面积、圆度范围等条件[^3]。 ```python params = cv2.SimpleBlobDetector_Params() # 改变阈值 params.minThreshold = 10 params.maxThreshold = 200 # 面积过滤 params.filterByArea = True params.minArea = 1500 # 圆形度过滤 params.filterByCircularity = True params.minCircularity = 0.1 # 凸性过滤 params.filterByConvexity = True params.minConvexity = 0.87 # 惯性比率过滤 params.filterByInertia = True params.minInertiaRatio = 0.01 detector = cv2.SimpleBlobDetector_create(params) ``` #### 4. 加载图像并转换为灰度模式 加载输入图片并将颜色空间从 BGR 转换到 GRAYSCALE,因为 Blob 检测仅支持单通道图像。 ```python im = cv2.imread("blob_detection.jpg", cv2.IMREAD_GRAYSCALE) if im is None: raise ValueError("无法读取图像文件") ``` #### 5. 执行 Blob 检测 调用创建好的检测器方法获取关键列表。 ```python keypoints = detector.detect(im) ``` #### 6. 可视化结果 利用 OpenCV 提供的功能绘制标记及其方向矢量箭头。 ```python with_keypoints = cv2.drawKeypoints( im, keypoints, np.array([]), (0, 0, 255), # RGB color red flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS ) cv2.imshow("Detected Blobs", with_keypoints) cv2.waitKey(0) cv2.destroyAllWindows() ``` #### 7. 获取关键坐标和大小信息 遍历所有找到的关键,并打印它们的位置以及直径尺寸[^2]。 ```python for keypoint in keypoints: x, y = keypoint.pt diameter = keypoint.size print(f"KeyPoint at ({x:.2f}, {y:.2f}) has size {diameter:.2f}") ``` --- ### 总结 上述流程展示了如何借助 Python 结合 OpenCV 来完成基本的 Blob 分析任务。可以根据实际需求进一步优化参数设定或者扩展功能应用领域[^1]^。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值