zoukankan      html  css  js  c++  java
  • opencv3寻找最小包围矩形在图像中的应用-滚动条

     1 #include<opencv2/opencv.hpp>
     2 #include<iostream>
     3 #include<vector>
     4 
     5 using namespace cv;
     6 using namespace std;
     7 
     8 int g_nMinThred = 128, g_nMaxThred = 255;
     9 int g_nThick = 0;
    10 
    11 int main()
    12 {
    13     Mat srcImage = imread("group.jpg");
    14 
    15     namedWindow("【原图】", 0);
    16     imshow("【原图】", srcImage);
    17 
    18     createTrackbar("minthred", "【原图】", &g_nMinThred, 255, 0);
    19     createTrackbar("maxthred", "【原图】", &g_nMaxThred, 255, 0);
    20     createTrackbar("thick", "【原图】", &g_nThick, 100, 0);
    21 
    22     //先对图像进行空间的转换(为了之后要提取二值图像)
    23     Mat grayImage;
    24     cvtColor(srcImage, grayImage, CV_BGR2GRAY);
    25     //对图像进行滤波,达到较好的效果
    26     GaussianBlur(grayImage, grayImage, Size(3, 3), 0, 0);
    27     imshow("【滤波后的图像】", grayImage);
    28 
    29     char key;
    30     while (1)
    31     {
    32         //用边缘检测的方式获取二值图像
    33         Mat cannyImage;
    34         Canny(grayImage, cannyImage, g_nMinThred, g_nMaxThred, 3);
    35 
    36         //在二值图像中提取轮廓
    37         vector<vector<Point>> contours;
    38         vector<Vec4i> hierarchy;
    39         findContours(cannyImage, contours, hierarchy, RETR_TREE, CHAIN_APPROX_SIMPLE, Point(0, 0));
    40 
    41         //对每个轮廓的点集 找逼近多边形
    42         vector<vector<Point>> approxPoint(contours.size());
    43         for (int i = 0; i < (int)contours.size(); i++)
    44         {
    45             //rectPoint变量中得到了矩形的四个顶点坐标
    46             RotatedRect rectPoint = minAreaRect(contours[i]);
    47             //定义一个存储以上四个点的坐标的变量
    48             Point2f fourPoint2f[4];
    49             //将rectPoint变量中存储的坐标值放到 fourPoint的数组中
    50             rectPoint.points(fourPoint2f);
    51 
    52             //根据得到的四个点的坐标  绘制矩形
    53             for (int i = 0; i < 3; i++)
    54             {
    55                 line(cannyImage, fourPoint2f[i], fourPoint2f[i + 1]
    56                     , Scalar(255, 255, 255), g_nThick);
    57             }
    58             line(cannyImage, fourPoint2f[0], fourPoint2f[3]
    59                 , Scalar(255, 255, 255), g_nThick);
    60         }
    61 
    62         imshow("【绘制后的图像】", cannyImage);
    63 
    64         key = waitKey(1);
    65         if (key == 27)
    66             break;
    67     }
    68 
    69     return 0;
    70 }

     
    0
  • 相关阅读:
    tp 30秒超时
    zend studio git 提示错误
    php连接数据库
    php点击排序
    表情符号解析
    js Object.assign 方法
    Web界面简繁体转换
    H5骨架屏实战
    JavaScript heap out of memory问题
    Vue bus插件封装
  • 原文地址:https://www.cnblogs.com/waw/p/5580078.html
Copyright © 2011-2022 走看看