Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
opencv中斑点检测、结构分析和形状描述符的比较_Opencv_Computer Vision_Blob_Shape - Fatal编程技术网

opencv中斑点检测、结构分析和形状描述符的比较

opencv中斑点检测、结构分析和形状描述符的比较,opencv,computer-vision,blob,shape,Opencv,Computer Vision,Blob,Shape,我需要使用斑点检测、结构分析和形状描述符(更具体地说是findContours、drawcours和矩)来检测图像中的彩色圆圈。我需要知道每种方法的优缺点以及哪种方法更好。有谁能告诉我这两种方法之间的区别吗?正如@scap3y在评论中建议的那样,我会选择一种更简单的方法。在这些情况下,我一直在做类似的事情: // Convert your image to HSV color space Mat hsv; hsv.create(originalImage.size(), CV_8UC3); cv

我需要使用斑点检测、结构分析和形状描述符(更具体地说是
findContours
drawcours
)来检测图像中的彩色圆圈。我需要知道每种方法的优缺点以及哪种方法更好。有谁能告诉我这两种方法之间的区别吗?

正如@scap3y在评论中建议的那样,我会选择一种更简单的方法。在这些情况下,我一直在做类似的事情:

// Convert your image to HSV color space
Mat hsv;
hsv.create(originalImage.size(), CV_8UC3);
cvtColor(originalImage,hsv,CV_RGB2HSV);

// Chose the range in each of hue, saturation and value and threshold the other pixels
Mat thresholded;
uchar loH = 130, hiH = 170;
uchar loS = 40, hiS = 255;
uchar loV = 40, hiV = 255;
inRange(hsv, Scalar(loH, loS, loV), Scalar(hiH, hiS, hiV), thresholded);

// Find contours in the image (additional step could be to 
// apply morphologyEx() first)
vector<vector<Point>> contours;
findContours(thresholded,contours,CV_RETR_EXTERNAL,CHAIN_APPROX_SIMPLE);

// Draw your contours as ellipses into the original image
for(i=0;i<(int)valuable_rectangle_indices.size();i++) {
    rect=minAreaRect(contours[valuable_rectangle_indices[i]]);
    ellipse(originalImage, rect, Scalar(0,0,255));  // draw ellipse
}
//将图像转换为HSV颜色空间
Mat-hsv;
创建(originalImage.size(),CV_8UC3);
CVT颜色(原始图像、hsv、CV_RGB2HSV);
//选择每个色调、饱和度和值的范围,并选择其他像素的阈值
垫阈值;
uchar loH=130,hiH=170;
乌查尔视距=40,他的视距=255;
uchar loV=40,hiV=255;
范围(hsv,标量(loH,loS,loV),标量(hiH,hiS,hiV),阈值);
//在图像中查找轮廓(可能需要执行其他步骤
//首先应用morphologyEx()
矢量等值线;
findContours(阈值、轮廓、CV_RETR_外部、链_近似_简单);
//在原始图像中绘制椭圆轮廓

对于(i=0;如果没有看到一些示例图像,很难实际指定哪种方法更好。与其他方法相比,每个方法在某些数据集中都有自己的漏洞。这是图像。哪种方法最好,以及原因。我已经尝试使用此图像的blob,但由于图像质量的原因,它不会返回任何内容。我已经用FindTours和moments成功地检测到了所有的点。也许我错过了什么,这就是为什么我的斑点检测不起作用的原因。这就是为什么我想知道两种方法的优缺点。请尝试简单一点的方法。也许可以将彩色图像分割成不同的通道,然后执行
HoughCircles
在每个通道上使用低阈值进行推回。感谢各位建议其他方法。但只要我的代码正常工作,我就可以使用它。我只想在blob和结构分析之间进行比较。