gpt4 book ai didi

c++ - 用opencv在洗衣机上进行点检测

转载 作者:行者123 更新时间:2023-12-01 14:42:26 27 4
gpt4 key购买 nike

我正在使用opencv blob检测功能来检测黑点,但这会导致速度慢和cpu消耗高。有没有更有效的方法来检测那些黑点?和 Blob 检测有时无法检测到一些黑点
这是我的示例图片
enter image description here
这是我现有的代码

SimpleBlobDetector::Params params;
params.minThreshold = 50;
params.maxThreshold = 200;
params.filterByArea = true;
params.minArea = 500;
params.filterByCircularity = true;
params.minCircularity = 0.1;
std::vector<KeyPoint> keypoints;
Ptr<SimpleBlobDetector> detector = SimpleBlobDetector::create(params);
detector->detect( im, keypoints);
Mat im_with_keypoints;
drawKeypoints( im, keypoints, im_with_keypoints, Scalar(0,0,255), DrawMatchesFlags::DRAW_RICH_KEYPOINTS );
这些是试图发现的黑点
enter image description here

最佳答案

1- 为了能够在SimpleBlobDetector期间提高速度,可以将输入源的大小除以2或更大。这仍将有助于找到 Blob ,也将提高速度。
2- 另一方面,对于精确的解决方案,您可以检测每个轮廓并在其周围绘制圆。您可以使用半径过滤圆,也可以输入圆的内部以计算像素,过滤轮廓尺寸等。您可以继续使用形态学功能来完成此任务。
这是准则和输出的代码:

#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>

using namespace std;
using namespace cv;
RNG rng(12345);

int main()
{

Mat img = imread("/ur/img/directory/image.png",0);
imshow("Input",img);
medianBlur(img,img,5);
Mat canny_output;
Canny( img, canny_output, 145, 145*3 );
vector<vector<Point> > contours;
findContours( canny_output, contours, RETR_TREE, CHAIN_APPROX_SIMPLE );
vector<vector<Point> > contours_poly( contours.size() );
vector<Point2f>centers( contours.size() );
vector<float>radius( contours.size() );
for( size_t i = 0; i < contours.size(); i++ )
{
approxPolyDP( contours[i], contours_poly[i], 3, true );
minEnclosingCircle( contours_poly[i], centers[i], radius[i] );
}
Mat drawing = Mat::zeros( canny_output.size(), CV_8UC3 );
for( size_t i = 0; i< contours.size(); i++ )
{
Scalar color = Scalar( 0,255,255);
drawContours( drawing, contours_poly, (int)i, color );
if((int)radius[i]>0 && (int)radius[i]<100)
circle( img, centers[i], (int)radius[i], color, 2 );
}
imshow("Output",img);
imshow("Contours",drawing);
waitKey(0);
return 0;
}
enter image description here

关于c++ - 用opencv在洗衣机上进行点检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62992926/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com