opencv开发笔记(十三):寻找和绘制物体的凸包
来源:互联网 发布:淘宝自定义导航条代码 编辑:程序博客网 时间:2024/06/05 19:14
// 寻找和绘制物体的凸包.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace cv;
using namespace std;
#define window1 "原始图"
#define window2 "效果图"
Mat src, gray;
int nth = 50;
int nthmax = 255;
RNG rng(12345);
Mat srccopy = src.clone();
Mat output;
vector<vector<Point>>counts;
vector<Vec4i>vhi;
void ontresh(int,void *);
int main()
{
src = imread("E:\\Pictures\\1.jpg");
cvtColor(src, gray, COLOR_BGR2GRAY);
blur(gray,gray,Size(3,3));
imshow(window1,src);
createTrackbar("阈值",window1,&nth,nthmax,ontresh);
ontresh(0, 0);
waitKey(0);
return 0;
}
void ontresh(int, void *) {
threshold(gray,output,nth,255,THRESH_BINARY); //图像二值话控制阈值
findContours(output,counts,vhi,RETR_TREE,CHAIN_APPROX_SIMPLE,Point(0,0));//寻找轮廓
//遍历每个轮廓寻找凸包
vector<vector<Point>>hull(counts.size());
for (unsigned int i = 0; i<counts.size();i++) {
convexHull(Mat(counts[i]), hull[i], false);
}
//绘制轮廓和凸包
Mat draw = Mat::zeros(output.size(), CV_8UC3);
for (unsigned int i = 0; i < counts.size(); i++) {
Scalar color = Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255));
drawContours(draw,counts,i,color,1,8,vector<Vec4i>(),0,Point());
drawContours(draw,hull,i,color,1,8,vector<Vec4i>(),0,Point());
}
imshow(window2,draw);
}
#include "stdafx.h"
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace cv;
using namespace std;
#define window1 "原始图"
#define window2 "效果图"
Mat src, gray;
int nth = 50;
int nthmax = 255;
RNG rng(12345);
Mat srccopy = src.clone();
Mat output;
vector<vector<Point>>counts;
vector<Vec4i>vhi;
void ontresh(int,void *);
int main()
{
src = imread("E:\\Pictures\\1.jpg");
cvtColor(src, gray, COLOR_BGR2GRAY);
blur(gray,gray,Size(3,3));
imshow(window1,src);
createTrackbar("阈值",window1,&nth,nthmax,ontresh);
ontresh(0, 0);
waitKey(0);
return 0;
}
void ontresh(int, void *) {
threshold(gray,output,nth,255,THRESH_BINARY); //图像二值话控制阈值
findContours(output,counts,vhi,RETR_TREE,CHAIN_APPROX_SIMPLE,Point(0,0));//寻找轮廓
//遍历每个轮廓寻找凸包
vector<vector<Point>>hull(counts.size());
for (unsigned int i = 0; i<counts.size();i++) {
convexHull(Mat(counts[i]), hull[i], false);
}
//绘制轮廓和凸包
Mat draw = Mat::zeros(output.size(), CV_8UC3);
for (unsigned int i = 0; i < counts.size(); i++) {
Scalar color = Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255));
drawContours(draw,counts,i,color,1,8,vector<Vec4i>(),0,Point());
drawContours(draw,hull,i,color,1,8,vector<Vec4i>(),0,Point());
}
imshow(window2,draw);
}
阅读全文
0 0
- opencv开发笔记(十三):寻找和绘制物体的凸包
- Opencv学习之寻找和绘制物体的凸包
- 【OpenCV笔记 15-1】OpenCV寻找物体的凸包convexHull
- OpenCV在图像中寻找轮廓和计算图像中物体的凸包
- OpenCV教程 之 寻找物体的轮廓与凸包:findContours、convexHull函数(C++)
- Android开发笔记(十三)视图绘制的几个方法
- EmgnCv进行轮廓寻找和计算物体凸包
- 【OpenCV笔记 15-2】OpenCV寻找物体最小包围矩形和最小包围圆
- opencv(六)寻找凸包和分水岭算法
- opencv 2.x学习笔记(十三)绘制直方图
- opencv寻找已知物体
- OpenCV笔记(十三)
- 【OpenCV学习】凸包的绘制
- OpenCV 2 学习笔记(19): 利用均值漂移(Meanshift)寻找物体
- 笔记十三(绘制二)
- OpenCV之imgproc 模块. 图像处理(5)在图像中寻找轮廓 计算物体的凸包 创建包围轮廓的矩形和圆形边界框 为轮廓创建可倾斜的边界框和椭圆 轮廓矩 多边形测试
- 计算物体的凸包(convexHull)
- OpenCV学习——凸包的绘制
- window安装tensorflow
- 修改Eclipse的@author信息
- 有关||和&&以及|与||、&与&&的区别
- UVA 11178 Morley's Theorem——直线相交
- Unreal Engine 4 Scripting with C++ Cookbook
- opencv开发笔记(十三):寻找和绘制物体的凸包
- 476. Number Complement 难度:简单
- ACM-ICPC2017北京网络赛(I) Minimum
- maven标签详解
- 安卓:文字阴影
- 主成分分析(Principal components analysis)-最大方差解释
- 【知了堂学习笔记】利用js、ajax实现遍历行传参
- 【转】时钟周期,机器周期,指令周期的区别
- 3D CNN