斑点检测

本文介绍了如何利用OpenCV中的cv2.SimpleBlobDetector进行斑点检测。这种方法适用于固定场景的检测,通过调整参数可以筛选出合适的斑点。
摘要由CSDN通过智能技术生成

关于OpenCV中使用cv2.SimpleBlobDetector来进行斑点检测,你可以用来进行一些固定场景的检测使用,你可以通过设定前面提及的一些参数范围来进行筛选,这一点是很方便的。


```python
# -*- coding: UTF-8 -*-

# 利用区域的圆度来进行检测
import cv2
import numpy as np

img = cv2.imread('a.png',-1)
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
bin_img = cv2.threshold(gray_img, 70, 255, cv2.THRESH_BINARY_INV)[1
OpenCV提供了多种斑点检测算法,其中包括SimpleBlobDetector、MSER(Maximally Stable Extremal Regions)、SIFT(Scale-Invariant Feature Transform)等。这里以SimpleBlobDetector为例,介绍一下OpenCV中如何实现斑点检测。 1. 首先,需要导入OpenCV库并读入待检测的图像,可以使用cv::imread()函数来读入图像。 ``` #include <opencv2/opencv.hpp> using namespace cv; int main() { Mat image = imread("test.png", IMREAD_GRAYSCALE); if (image.empty()) { std::cout << "Failed to read image." << std::endl; return -1; } // 进行斑点检测 // ... return 0; } ``` 2. 创建SimpleBlobDetector对象,并设置一些参数,如阈值、最小面积、最大面积等。 ``` SimpleBlobDetector::Params params; params.minThreshold = 10; params.maxThreshold = 200; params.filterByArea = true; params.minArea = 100; params.maxArea = 10000; Ptr<SimpleBlobDetector> detector = SimpleBlobDetector::create(params); ``` 3. 使用detector->detect()函数进行斑点检测,该函数返回一个vector类型的数据,其中包含了所有被检测到的斑点的坐标。 ``` std::vector<KeyPoint> keypoints; detector->detect(image, keypoints); ``` 4. 可以使用cv::drawKeypoints()函数将检测到的斑点绘制到图像上。 ``` Mat result; drawKeypoints(image, keypoints, result, Scalar(0,0,255), DrawMatchesFlags::DRAW_RICH_KEYPOINTS); imshow("Result", result); waitKey(0); ``` 这样就完成了斑点检测的过程,可以通过调整参数来适应不同的图像和应用场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值