opencv3计算图像中轮廓的长度-滚动条
2015-10-19 23:10
369 查看
#include<iostream> #include<opencv2/opencv.hpp> #include<vector> using namespace cv; using namespace std; Mat grayImage, cannyImage; int g_nMinThred = 128, g_nMaxThred = 255; //有滚动条事件时,可以进入回调函数 void on_Trackbar(int, void *) { //为了得到二值图像,对灰度图进行边缘检测 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)); //绘制轮廓 for (int i = 0; i < (int)contours.size(); i++) { drawContours(cannyImage, contours, i, Scalar(255), 1, 8); } //计算轮廓的长度 for (int i = 0; i < (int)contours.size(); i++) { double g_dConLength = arcLength(contours[i], true); cout << "【用轮廓长度计算函数计算出来的第" << i << "个轮廓的长度为:】" << g_dConLength << endl; } imshow("【处理后的图像】", cannyImage); } int main() { Mat srcImage = imread("group.jpg"); namedWindow("【原图】", 0); imshow("【原图】", srcImage); //首先对图像进行空间的转换 cvtColor(srcImage, grayImage, CV_BGR2GRAY); //对灰度图进行滤波 GaussianBlur(grayImage, grayImage, Size(3, 3), 0, 0); imshow("【滤波后的图像】", grayImage); createTrackbar("min", "【原图】", &g_nMinThred, 255, on_Trackbar); on_Trackbar(g_nMinThred, 0); createTrackbar("max", "【原图】", &g_nMaxThred, 255, on_Trackbar); on_Trackbar(g_nMaxThred, 0); waitKey(0); return 0; }
相关文章推荐
- opencv3计算图像中轮廓的长度
- HDU 4020 Ads Proposal 简单的模拟
- opencv3计算图像中轮廓的面积-滚动条
- Linux pwd 命令 【转载】
- opencv3计算图像中轮廓的面积
- Linux C 结构体
- do_fork源码阅读
- opencv3计算图像轮廓的中心矩-滚动条
- Linux more 命令 【转载】
- opencv3计算图像轮廓的中心矩
- Linux less 命令 【转载】
- opencv3计算轮廓的长度-arcLength函数
- opencv3计算轮廓的面积-contourArea函数
- Linux下的socket编程实践(七) I/O多路复用技术之select模型
- Linux命令行在su root后突然变成bash-4.1$的办法
- GIC ITS 学习笔记(一)
- opencv3返回外部矩形边界在图像中的应用-滚动条
- opencv3返回外部矩形边界-boundingRect函数
- opencv3阀值化下的轮廓查找与绘制
- opencv3逼近多边形曲线-在图像中的应用-滚动条