基于比例法和颜色筛选的面积计算
Posted loving-q
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于比例法和颜色筛选的面积计算相关的知识,希望对你有一定的参考价值。
有一个已知的面积作为标定,比例法来计算,颜色识别inrange()函数用来区分不同的图像,
OpenCv麻烦的就是得自己去修改参数
Mat g_srcImage2, g_grayImage2; vector<Vec4i>g_vHierarchy2; Mat g_srcImage, g_grayImage; int main() { VideoCapture capture(0); while (1) { //载入源图像 system("color 02"); capture >> g_srcImage;// = imread("D:\6666.jpg"); imshow("原图", g_srcImage); capture >> g_srcImage2;// = imread("D:\6666.jpg"); cvtColor(g_srcImage2, g_grayImage2, COLOR_BGR2HSV);//对图像HSV处理 inRange(g_grayImage2, Scalar(0, 0, 0), Scalar(180, 255, 46), g_grayImage2);//颜色识别--黑色的标定面积 imshow("黑色的标定面积", g_grayImage2); ////////////////////////////寻找最小矩形边框////////////////////////////////////////////////////////// vector<vector<Point>>contours2; vector<Vec4i>hierarchy2; findContours(g_grayImage2, contours2, hierarchy2, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE); RotatedRect box2; double area2 = 0; for (int i = 0; i < contours2.size(); i++) { if (contourArea(contours2[i]) > area2) { box2 = minAreaRect(contours2[i]); area2 = contourArea(contours2[i]); } } Point2f vertex2[4]; box2.points(vertex2); for (int i = 0; i < 4; i++) { box2.size.width; line(g_grayImage2, vertex2[i], vertex2[(i + 1) % 4], Scalar(100, 200, 211), 2, LINE_AA); } cvtColor(g_srcImage, g_grayImage, COLOR_BGR2HSV);//对图像HSV处理 inRange(g_grayImage, Scalar(44, 86, 20), Scalar(111, 255, 255), g_grayImage);//电路板识别 //寻找最小矩形边框 vector<vector<Point>>contours; vector<Vec4i>hierarchy; findContours(g_grayImage, contours, hierarchy, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE); RotatedRect box; double area = 0; for (int i = 0; i < contours.size(); i++) { if (contourArea(contours[i]) > area) { box = minAreaRect(contours[i]); area = contourArea(contours[i]); } } Point2f vertex[4]; box.points(vertex); for (int i = 0; i < 4; i++) { box.size.width; line(g_grayImage, vertex[i], vertex[(i + 1) % 4], Scalar(100, 200, 211), 2, LINE_AA); system("color 02"); cout << "宽度" << box.size.width / box2.size.width * 30 << endl << "长度" << box.size.height / box2.size.height * 30 << endl << "面积" << endl << box.size.height * box.size.width / box2.size.height / box2.size.width * 900 << endl; } waitKey(50); } return 0; }
以上是关于基于比例法和颜色筛选的面积计算的主要内容,如果未能解决你的问题,请参考以下文章
游戏开发答疑马里奥派对选面积大作战玩法的功能实现(Unity | 算法 | 四邻域 | 连通块 | 面积比例分割)
游戏开发答疑马里奥派对选面积大作战玩法的功能实现(Unity | 算法 | 四邻域 | 连通块 | 面积比例分割)
图像识别基于帧差法和颜色空间实现火灾检测matlab源码GUI