opencv3返回外部矩形边界在图像中的应用-滚动条

来源:互联网 发布:党员干部必知50个名词 编辑:程序博客网 时间:2024/05/16 08:44
#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());/*Mat drawImage = Mat::zeros(srcImage.size(), CV_8UC3);*/for (int i = 0; i < (int)contours.size(); i++){//rect变量中得到了矩形Rect rect = boundingRect(contours[i]);//根据得到的矩形  绘制矩形rectangle(cannyImage, rect, Scalar(255, 255, 255), g_nThick + 1);}imshow("【绘制后的图像】", cannyImage);key = waitKey(1);if (key == 27)break;}return 0;}

0 0
原创粉丝点击