因此,我正在尝试在下一帧中使用OpenCV查找白色群集的中心:

*使用OpenCV imshow()制作的屏幕截图*

我已经尝试过HoughGradient函数,但是结果不一致,因为这些簇在所有帧中都不都是圆形。 还有其他建议吗?

===============>>#1 票数:1 已采纳

我认为您有两种选择。

  1. 使用连接的组件查找斑点,因为您知道它们是圆形的,所以需要对其中心进行一些估计。 OpenCV文档上的drawcontours函数提供了一个很好的示例,说明了如何使用轮廓查找连接的组件: http : //docs.opencv.org/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html#drawcontours

  2. 如果您知道斑点为白色/白色,则可以找到颜色接近白色/白色的所有像素的索引,然后将每组索引手动重建为连接的组件。

(可能相关的文章: OpenCV对象检测-中心点

===============>>#2 票数:0

正如@berak所指出的,您可以使用矩来查找斑点的质心

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

using namespace cv;

Point getCentroid( InputArray Points )
{
    Point Coord;
    Moments mm = moments( Points, false );
    double moment10 = mm.m10;
    double moment01 = mm.m01;
    double moment00 = mm.m00;
    Coord.x = int(moment10 / moment00);
    Coord.y = int(moment01 / moment00);
    return Coord;
}

int main( int argc, char* argv[] )
{
    Mat src = imread( argv[1] );

    Mat gray;
    cvtColor( src, gray, CV_BGR2GRAY );
    gray = gray > 127;

    Mat nonzeropixels;
    findNonZero( gray, nonzeropixels );

    Point pt = getCentroid( nonzeropixels );
    rectangle(src, pt,pt, Scalar(0, 255, 0), 2);

    imshow("result",src);
    waitKey();

    return 0;
}

测试图像和结果:(绿点是白色斑点的质心)

在此处输入图片说明 在此处输入图片说明

在此处输入图片说明 在此处输入图片说明

  ask by Jasper Weyne translate from so

未解决问题?本站智能推荐:

2回复

使用OpenCV检测颜色的最有效方法?

我使用以下方法在图像中心附近的某个地方设置了一个感兴趣的区域: 我正在使用相机,并且每当我抓取一个框架时,ROI都会在30%到100%之间的任意位置填充我想要的颜色,在这种情况下为红色。 知道当前帧中是否存在红色的最有效方法是什么? 解:
4回复

在opencv中聚类图像片段

我正在使用opencv进行非静态相机的运动检测。 我正在使用一种非常基本的背景减法和阈值处理方法来广泛了解示例视频中的所有内容。 在阈值处理之后,我将所有可分离的白色像素“补丁”存储起来,将它们存储为独立的组件并随机地用红色,绿色或蓝色着色。 下图显示了足球视频,其中所有这些组件都可见。
1回复

如何使用OpenCV检测和修​​复图像中的坏点?

我有一些图像,他们有坏像素(或像素结果不好)我有原始数据(bayered数据)。 如何使用OpenCV检测并修复它们? 我尝试使用拜耳数据过滤器修复它们。 在我的算法中,我检测每个像素的颜色,如果它是绿色,则使用X图案来查找相邻的绿色像素,如果当前像素的值大于相邻像素的40,
1回复

使用OpenCV检测图像中的最大矩形

我在这里问了一个先前的问题,并按照答案的建议构建了以下程序,我认为该程序可以检测到大矩形,但根本无法检测到矩形。 它确实适用于该图像 。 原始图片 所需的图像 我希望解决方案不仅适用于此图像,而且适用于此类不同的图像。 以下代码的大部分来自SO的不同答案 我的完整程序
2回复

使用OpenCv检测图像中的矩形明亮区域

我之前曾问过一个问题,使用c ++在图像中标记兴趣点 。 我使用相同的解决方案,并使用自适应阈值和斑点检测算法 (增长区域)获得了要求的点。 我有原始源图,我想在其中检测矩形区域 原始图片: 但是,在使用算法后,我得到了这样的信息(如果在新选项卡中打开它的细节可见) 标
1回复

使用OpenCV检测图像转换

我需要做一个简单的任务: 有一个参考图像,计算另一个图像的像素平移,考虑到没有缩放和没有旋转 ,只需要翻译:(x,y)。 有这个,这是easies方法吗? 自相关? 特征提取? 我想根本不需要特征提取,因为它是一项简单的任务。 任何帮助将不胜感激,干杯,
3回复

如何使用opencv检测模糊圆的中心

我有以下图片: 图片上有曲线。 我想找到包含曲线的圆心。 我试过opencv和霍夫圈变换,但没有结果。
1回复

如何使用opencv在RGB图像中有效地处理复杂的阈值?

我想将Matlab代码转换为c ++ opencv,它对RGB图像进行阈值处理:红色值>阈值1和红色/绿色>阈值2和红色/蓝色>阈值3 Matlab代码是: 其中im(:,:,1), im(:,:,2)和im(:,:,3)是r,g和b值。 我发现与使用“用于
2回复

使用c ++检测opencv中图像中任何文本的位置

http://www.2d3dfloorplans.com/wp-content/themes/default/images/2dfloorplans_1.jpg是我的输入图像。 我想从此图片中删除文字。 (例如,卧室,11'X12',衣柜......)。 注意:我想自动删除。 不是手动
1回复

如何使用opencv 2.4.9获得有效的ORB结果?

我在这里执行两个图像之间的模板匹配。 我使用ORB算法提取关键点并将其与BF匹配器匹配,但我没有得到好结果。 我在这里添加Image来理解问题 在这里,你可以看到泰迪熊上的深蓝色线,它实际上是一个矩形,当从对象关键点识别对象时,它将从帧图像周围绘制。 在这里我使用的是Opencv