C++OpenCV凸包检测实战

本文介绍了如何利用C++和OpenCV进行凸包检测。首先概述了凸包的概念,接着详细阐述了实现流程,包括将图像转为灰度和二值图像,寻找轮廓点,再通过OpenCV的凸包API找出最优轮廓点并连接,形成最终的凸包轮廓。
摘要由CSDN通过智能技术生成

1.概述

凸包作为计算几何入门必学的知识非常重要,那么什么是凸包呢?

凸包的定义可以理解为给定二维平面上的点集,凸包就是将最外层的点连接起来构成的凸多边形,它能包含点集中所有的点。在找凸包的时候需要使用向量,因为两向量的叉积的正负可以判断两个向量所处的方位。向量以及相应的操作建议写成结构体的形式封装起来,包括运算符重载。

2.实现流程

  1. 先将图像转化为灰度图像
  2. 转为二值图像
  3. 找到图像全部轮廓点
  4. 使用凸包API从全部轮廓点中找到最优轮廓点
  5. 连接凸包轮廓点

3.完整实验程序

#include<iostream>
#include<opencv2\opencv.hpp>

using namespace cv;
using namespace std;

// 声明 原始图片,灰度图片,和 canny边缘图片
Mat image, gray_image;

int threshold_value = 100;
int threshold_max = 255;

void convexhull(int, void*);
int main(int argc, char** argv)
{
	// 载入图片
	image = imread("F:/testImage/hand.png");
	// 判断载入图片是否成功
	if (image.empty())
	{
		printf("miss 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI炮灰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值