3.寻找物体的凸包

#include “opencv/opencv_application.h”
#include “public.h”

int main( int argc, const char* argv[])
{
// OpencvOperator opencvOperator;
// opencvOperator.FullfillHoughLinesPChange();
//初始化变量和随机值
Mat image(600, 600, CV_8UC3);
RNG & rng = theRNG();
while(1)
{
//参数初始化
char key; //键值
int count = (unsigned)rng%100 + 3; //随机生成点的数量,形成凸包至少要3各点
vector points; //点值
// cout << "The value of count is " << count << endl;
for(int i = 0; i < count; i++)
{
Point point;
point.x = rng.uniform(image.cols/4, image.cols3/4);
point.y = rng.uniform(image.cols/4, image.cols
3/4);
// cout << "The value of point.x is " << point.x << endl;

        points.push_back(point);
    }

    //检测凸包
    vector<int> hull;
    convexHull(Mat(points), hull, true);

    //绘制出随机颜色的点
    image = Scalar::all(0);
    for(int i = 0; i < count; i++)
    {
        circle(image, points[i], 3, Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255)), FILLED, LINE_AA);
    }

    //准备参数
    int hullcount = (int)hull.size(); //凸包的边数
    Point point0 = points[hull[hullcount-1]]; //连接凸包边的坐标点

    //绘制凸包的边
    for(int i = 0; i < hullcount; i++)
    {
        Point point = points[hull[i]];
        line(image, point0, point, Scalar(255, 255, 255), 2, LINE_AA);
        point0 = point;
    }

    //显示效果图
    imshow("凸包检测示例", image);

    //按下ESC, Q, 或者q程序退出
    key = (char)waitKey();
    if(key == 27 || key == 'q' || key == 'Q') break;

}

return 0;

}

凸包检测是计算机视觉中常用的图像处理技术,它用于寻找二维形状的凸包轮廓。下面是关于凸包检测的原理、作用和应用的简要介绍: 1. 原理: 凸包是指包围一组点集的最小凸多边形或凸壳。凸包检测的原理是通过寻找包含所有点的最小凸多边形来确定凸包轮廓。 2. 作用: 凸包检测在计算机视觉和图像处理中有多种作用,包括: - 物体识别和分类:通过提取物体凸包轮廓,可以用于物体的识别和分类任务。 - 物体轮廓分析:凸包检测可以帮助分析物体的形状、边界和几何特征。 - 图像分割:基于凸包的轮廓提取可以用于图像分割,将图像中的不同物体或域分离出来。 - 缺陷检测:通过比较实际形状和其凸包之间的差异,可以检测出物体表面的缺陷或异常。 3. 应用: 凸包检测在各种计算机视觉和图像处理应用中被广泛使用,包括但不限于以下领域: - 目标检测和识别:凸包可用于提取目标的外形特征,并进行分类和识别。 - 图像分析和处理:凸包检测可用于分割图像、提取边缘、计算形状特征等。 - 视觉导航和机器人技术:凸包检测可以帮助机器人或自动导航系统识别和定位目标物体。 - 缺陷检测和质量控制:通过凸包检测可以检测产品的缺陷、判定质量。 总之,凸包检测是一种有用的图像处理技术,可以在许多计算机视觉应用中发挥重要作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值