OpenCV 计算物体的凸包
- 使用OpenCV函数 convexHull
步骤
- 滤波——消除噪声
- 增强——二值化,使轮廓更明显
- 检测——选出边缘点
- 计算凸包
例程
#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 计算物体的凸包相关推荐
- 【OpenCV 】计算物体的凸包/创建包围轮廓的矩形和圆形边界框/createTrackbar添加滑动条/
目录 topic 1:模板匹配 topic 2:图像中寻找轮廓 topic 3:计算物体的凸包 topic 4:轮廓创建可倾斜的边界框和椭圆¶ topic 5:轮廓矩¶ topic 6:为程序界面添加 ...
- OpenCV之imgproc 模块. 图像处理(5)在图像中寻找轮廓 计算物体的凸包 创建包围轮廓的矩形和圆形边界框 为轮廓创建可倾斜的边界框和椭圆 轮廓矩 多边形测试
在图像中寻找轮廓 目标 在这个教程中你将学到如何: 使用OpenCV函数 findContours 使用OpenCV函数 drawContours 原理 例程 教程的代码在下面给出. 你也可以从 这里 ...
- opencv计算物体姿态旋转_物体的三维识别与6D位姿估计:PPF系列论文介绍(五)...
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 本文创新点: 点对特征是一种广泛应用的检测点云中三维物体的方法,但在存在传感器噪声和背景杂波的情况下, ...
- opencv计算物体姿态旋转_OpenCV轮廓检测,计算物体旋转角度
效果还是有点问题的,希望大家共同探讨一下 // FindRotation-angle.cpp : 定义控制台应用程序的入口点. // // findContours.cpp : 定义控制台应用程序的入 ...
- OpenCV计算物体的重心坐标(2值图像)
效果图: 代码: // FindGravity.cpp : 定义控制台应用程序的入口点. //#include "stdafx.h" #include <iostream&g ...
- opencv学习——Moments()函数,计算物体形状方向
opencv中的矩主要包括以下几种:空间矩,中心矩和中心归一化矩. class Moments { public: - // 空间矩 double m00, m10, m01, m20, m11, m ...
- 《OpenCV3编程入门》学习笔记8 图像轮廓与图像分割修复(二)寻找物体的凸包
8.2 寻找物体的凸包 8.2.1 概念 1.给定二维平面上的点集,将最外层点连接起来构成的凸多边形. 2.理解物体形状或轮廓的一种比较有用的方法是计算一个物体的凸包,然后计算其凸缺陷(convexi ...
- Opencv——查找并绘制凸包、凸包与轮廓的关系
定义 给定二维平面上的点集,凸包就是将最外层的点连接起来构成的凸多边型. 理解物体形状或轮廓的一 种比较有用的方法便是计算一个物体的凸包,然后计算其凸缺陷(convexity defects). 检测 ...
- 机器学习水果识别——python+opencv实现物体特征提取
文章目录 一.用python+opencv实现物体特征值提取 1.读取图像.转为灰度图像并降噪 2.获取水果轮廓 将最大轮廓画入最开始的img图像并显示 将小于某一规模的轮廓删除 3.提取水果的面积周 ...
最新文章
- 北航计算机学硕还是专硕,2018北航计算机专硕总分第一录取经验
- 创业失败的七个原因及解决之道
- TabLayout+ViewPager实现选项卡动态滑动效果
- BaseExecutor.query()-清空本地缓存
- xfce4开始菜单中的小老鼠图标不见了
- chmod g+s 、chmod o+t 、chmod u+s
- 两分数相乘后约分的Cantor表(洛谷P1482题题解,Java语言描述)
- 机器学习课程笔记【十四】- 增强学习和自适应控制控制论
- linux opencl安装方法,如何在Ubuntu上安装libOpenCL.so
- 计算机游戏41,Win7玩游戏提示“无法启动此程序,计算机中丢失d3dx9-41.dll”怎么办...
- PHP网站从Apache转移到Nginx后产生404错误的原因和解决办法
- 【君思智慧园区】智慧能源综合管理平台,智慧能源管理云平台建设方案!
- 2021年电工(技师)考试题库及电工(技师)考试报名
- 服务器的日常运维巡检视频,日常运维检查记录表
- 读书无用论?那个卖猪肉的北大毕业生,曾经受尽嘲讽,现在身价过亿了
- 在AndroidStudio中使用ARCore
- 云控微信开发SDK使用教程--手机微信收钱任务执行结果通知服务端
- 电脑开机后,显示屏无信号怎么处理?
- 彼得.得鲁克与因果定律
- Altium Designer 20 (6)——二极管以及光耦元件创建
热门文章
- 企业服务与发展联盟即将正式成立
- Java IO框架总揽--ObjectInputStream ObjectOutputStream源码解读
- Redux其实很简单(原理篇)
- Linux基本命令之文件查找、检索
- [MySQL 源码] 从buffer pool中获取空闲block流程
- SparkStreaming入门及例子
- Adobe产品安装错误问题:Exit Code: 7
- How to run a estimaton
- three approaches to industrial experiences at cambridge
- what if you can not achieve them on a list