1.概述
凸包作为计算几何入门必学的知识非常重要,那么什么是凸包呢?
凸包的定义可以理解为给定二维平面上的点集,凸包就是将最外层的点连接起来构成的凸多边形,它能包含点集中所有的点。在找凸包的时候需要使用向量,因为两向量的叉积的正负可以判断两个向量所处的方位。向量以及相应的操作建议写成结构体的形式封装起来,包括运算符重载。
2.实现流程
- 先将图像转化为灰度图像
- 转为二值图像
- 找到图像全部轮廓点
- 使用凸包API从全部轮廓点中找到最优轮廓点
- 连接凸包轮廓点
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