• 使用OpenCV函数 convexHull

步骤

  1. 滤波——消除噪声
  2. 增强——二值化,使轮廓更明显
  3. 检测——选出边缘点
  4. 计算凸包

例程

#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <opencv2/highgui/highgui_c.h>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>using namespace cv;
using namespace std;Mat src; Mat src_gray;
int thresh = 100;
int max_thresh = 255;
RNG rng(12345);/// Function header
void thresh_callback(int, void*);/** @function main */
int main(int argc, char** argv)
{/// 加载源图像src = imread("../images/hands2.jpg");/// 转成灰度图并进行模糊降噪cvtColor(src, src_gray, CV_BGR2GRAY);blur(src_gray, src_gray, Size(3, 3));/// 创建窗体const char* source_window = "Source";namedWindow(source_window, CV_WINDOW_AUTOSIZE);imshow(source_window, src);createTrackbar(" Threshold:", "Source", &thresh, max_thresh, thresh_callback);thresh_callback(0, 0);waitKey(0);return(0);
}/** @function thresh_callback */
void thresh_callback(int, void*)
{Mat src_copy = src.clone();Mat threshold_output;vector<vector<Point> > contours;vector<Vec4i> hierarchy;/// 对图像进行二值化threshold(src_gray, threshold_output, thresh, 255, THRESH_BINARY);/// 寻找轮廓findContours(threshold_output, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0));/// 对每个轮廓计算其凸包vector<vector<Point> >hull(contours.size());for (int i = 0; i < contours.size(); i++){convexHull(Mat(contours[i]), hull[i], false);}/// 绘出轮廓及其凸包Mat drawing = Mat::zeros(threshold_output.size(), CV_8UC3);for (int i = 0; i < contours.size(); i++){Scalar color = Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255));drawContours(drawing, contours, i, color, 1, 8, vector<Vec4i>(), 0, Point());drawContours(drawing, hull, i, color, 1, 8, vector<Vec4i>(), 0, Point());}/// 把结果显示在窗体namedWindow("Hull demo", CV_WINDOW_AUTOSIZE);imshow("Hull demo", drawing);
}


OpenCV 计算物体的凸包相关推荐

  1. 【OpenCV 】计算物体的凸包/创建包围轮廓的矩形和圆形边界框/createTrackbar添加滑动条/

    目录 topic 1:模板匹配 topic 2:图像中寻找轮廓 topic 3:计算物体的凸包 topic 4:轮廓创建可倾斜的边界框和椭圆¶ topic 5:轮廓矩¶ topic 6:为程序界面添加 ...

  2. OpenCV之imgproc 模块. 图像处理(5)在图像中寻找轮廓 计算物体的凸包 创建包围轮廓的矩形和圆形边界框 为轮廓创建可倾斜的边界框和椭圆 轮廓矩 多边形测试

    在图像中寻找轮廓 目标 在这个教程中你将学到如何: 使用OpenCV函数 findContours 使用OpenCV函数 drawContours 原理 例程 教程的代码在下面给出. 你也可以从 这里 ...

  3. opencv计算物体姿态旋转_物体的三维识别与6D位姿估计:PPF系列论文介绍(五)...

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 本文创新点: 点对特征是一种广泛应用的检测点云中三维物体的方法,但在存在传感器噪声和背景杂波的情况下, ...

  4. opencv计算物体姿态旋转_OpenCV轮廓检测,计算物体旋转角度

    效果还是有点问题的,希望大家共同探讨一下 // FindRotation-angle.cpp : 定义控制台应用程序的入口点. // // findContours.cpp : 定义控制台应用程序的入 ...

  5. OpenCV计算物体的重心坐标(2值图像)

    效果图: 代码: // FindGravity.cpp : 定义控制台应用程序的入口点. //#include "stdafx.h" #include <iostream&g ...

  6. opencv学习——Moments()函数,计算物体形状方向

    opencv中的矩主要包括以下几种:空间矩,中心矩和中心归一化矩. class Moments { public: - // 空间矩 double m00, m10, m01, m20, m11, m ...

  7. 《OpenCV3编程入门》学习笔记8 图像轮廓与图像分割修复(二)寻找物体的凸包

    8.2 寻找物体的凸包 8.2.1 概念 1.给定二维平面上的点集,将最外层点连接起来构成的凸多边形. 2.理解物体形状或轮廓的一种比较有用的方法是计算一个物体的凸包,然后计算其凸缺陷(convexi ...

  8. Opencv——查找并绘制凸包、凸包与轮廓的关系

    定义 给定二维平面上的点集,凸包就是将最外层的点连接起来构成的凸多边型. 理解物体形状或轮廓的一 种比较有用的方法便是计算一个物体的凸包,然后计算其凸缺陷(convexity defects). 检测 ...

  9. 机器学习水果识别——python+opencv实现物体特征提取

    文章目录 一.用python+opencv实现物体特征值提取 1.读取图像.转为灰度图像并降噪 2.获取水果轮廓 将最大轮廓画入最开始的img图像并显示 将小于某一规模的轮廓删除 3.提取水果的面积周 ...

最新文章

  1. 北航计算机学硕还是专硕,2018北航计算机专硕总分第一录取经验
  2. 创业失败的七个原因及解决之道
  3. TabLayout+ViewPager实现选项卡动态滑动效果
  4. BaseExecutor.query()-清空本地缓存
  5. xfce4开始菜单中的小老鼠图标不见了
  6. chmod g+s 、chmod o+t 、chmod u+s
  7. 两分数相乘后约分的Cantor表(洛谷P1482题题解,Java语言描述)
  8. 机器学习课程笔记【十四】- 增强学习和自适应控制控制论
  9. linux opencl安装方法,如何在Ubuntu上安装libOpenCL.so
  10. 计算机游戏41,Win7玩游戏提示“无法启动此程序,计算机中丢失d3dx9-41.dll”怎么办...
  11. PHP网站从Apache转移到Nginx后产生404错误的原因和解决办法
  12. 【君思智慧园区】智慧能源综合管理平台,智慧能源管理云平台建设方案!
  13. 2021年电工(技师)考试题库及电工(技师)考试报名
  14. 服务器的日常运维巡检视频,日常运维检查记录表
  15. 读书无用论?那个卖猪肉的北大毕业生,曾经受尽嘲讽,现在身价过亿了
  16. 在AndroidStudio中使用ARCore
  17. 云控微信开发SDK使用教程--手机微信收钱任务执行结果通知服务端
  18. 电脑开机后,显示屏无信号怎么处理?
  19. 彼得.得鲁克与因果定律
  20. Altium Designer 20 (6)——二极管以及光耦元件创建

热门文章

  1. 企业服务与发展联盟即将正式成立
  2. Java IO框架总揽--ObjectInputStream ObjectOutputStream源码解读
  3. Redux其实很简单(原理篇)
  4. Linux基本命令之文件查找、检索
  5. [MySQL 源码] 从buffer pool中获取空闲block流程
  6. SparkStreaming入门及例子
  7. Adobe产品安装错误问题:Exit Code: 7
  8. How to run a estimaton
  9. three approaches to industrial experiences at cambridge
  10. what if you can not achieve them on a list