opencv3寻找最小包围矩形在图像中的应用-滚动条
2016-06-13 11:33
639 查看
#include<opencv2/opencv.hpp> #include<iostream> #include<vector> using namespace cv; using namespace std; int g_nMinThred = 128, g_nMaxThred = 255; int g_nThick = 0; int main() { Mat srcImage = imread("group.jpg"); namedWindow("【原图】", 0); imshow("【原图】", srcImage); createTrackbar("minthred", "【原图】", &g_nMinThred, 255, 0); createTrackbar("maxthred", "【原图】", &g_nMaxThred, 255, 0); createTrackbar("thick", "【原图】", &g_nThick, 100, 0); //先对图像进行空间的转换(为了之后要提取二值图像) Mat grayImage; cvtColor(srcImage, grayImage, CV_BGR2GRAY); //对图像进行滤波,达到较好的效果 GaussianBlur(grayImage, grayImage, Size(3, 3), 0, 0); imshow("【滤波后的图像】", grayImage); char key; while (1) { //用边缘检测的方式获取二值图像 Mat cannyImage; Canny(grayImage, cannyImage, g_nMinThred, g_nMaxThred, 3); //在二值图像中提取轮廓 vector<vector<Point>> contours; vector<Vec4i> hierarchy; findContours(cannyImage, contours, hierarchy, RETR_TREE, CHAIN_APPROX_SIMPLE, Point(0, 0)); //对每个轮廓的点集 找逼近多边形 vector<vector<Point>> approxPoint(contours.size()); for (int i = 0; i < (int)contours.size(); i++) { //rectPoint变量中得到了矩形的四个顶点坐标 RotatedRect rectPoint = minAreaRect(contours[i]); //定义一个存储以上四个点的坐标的变量 Point2f fourPoint2f[4]; //将rectPoint变量中存储的坐标值放到 fourPoint的数组中 rectPoint.points(fourPoint2f); //根据得到的四个点的坐标 绘制矩形 for (int i = 0; i < 3; i++) { line(cannyImage, fourPoint2f[i], fourPoint2f[i + 1] , Scalar(255, 255, 255), g_nThick); } line(cannyImage, fourPoint2f[0], fourPoint2f[3] , Scalar(255, 255, 255), g_nThick); } imshow("【绘制后的图像】", cannyImage); key = waitKey(1); if (key == 27) break; } return 0; }
顶0踩
相关文章推荐
- shell编程中for file in $*; do是什么意思.
- xshell和Idea常用快捷键=>常用的哟!
- OpenCV常用操作
- MMM结合Semisync机制实现Mysql Master-Master高可用
- Linux定时备份文件系统,并删除7天前的备份文件
- notepad++安装nppftp插件,直接连接linux服务器--修改文件
- redhat离线安装cdh
- Mac OS X中配置Apache后提示You don't have permission to access / on this server
- 使用Apache配置项目图片地址映射
- Linux PWM framework简介和API描述
- linux中shell变量$#,$@,$0,$1,$2的含义解释
- CentOS7.0 安装NTP服务器及思科交换机NTP同步
- 寻找适合你的MySQL高可用解决方案
- Linux 文件操作总结
- 将openwrt中的dosfstools升级到4.0版
- Linux 如何查看进程的各线程的CPU占用
- Jenkins+maven+tomcat8自动构建部署配置
- vim 的使用,最牛编辑器VIM快捷操作
- 【OpenCV】Mat转IpIImag*以及IpIImage*灰度化
- tomcat设置默认项目