OpenCV 2之视频标注
来源:互联网 发布:linux mv 编辑:程序博客网 时间:2024/06/05 03:48
在做视频分析时,常常需要标注特定帧的目标图像,而不同的任务需要的功能不一。所以与其求诸人,不如求诸己。自己动手写了个标注程序,总体上还是比较好用的。最关键的是,可以自己进行扩展功能,不受制与商用软件的特定功能。
好了,现在说明下,实现的基本功能:
(1)可以再任意帧,进行标定任意多的标注框。
(2)标定框自动显示框号。
(3)可以依次撤销上一个标注框,同时可以清除所有标注框。
(4)可以保存任意帧的标注结果。
效果图:
程序实现:
(1)鼠标响应函数:
static void onMouse(int event, int x, int y, int, void*){switch (event){case CV_EVENT_LBUTTONDOWN:isDrawing = true;pt1 = Point(x, y);//确定第一个点break;case CV_EVENT_LBUTTONUP:if (isDrawing){pt2 = Point(x, y);//确定第二个点getRectVec(pt1, pt2, rectVec);//确定标注框,保存之}isDrawing = false;break;default:if (isDrawing){pt2 = Point(x, y);//中间过渡点(第二个点)rectangle(temImg, pt1, pt2, blue);//标注框未定前画蓝色框}break;}}void getRectVec(Point pt1, Point pt2, vector<Rect>& rectVec)//保存标注框{Rect drawBox;drawBox.x = MIN(pt1.x, pt2.x);drawBox.y = MIN(pt1.y, pt2.y);drawBox.width = abs(pt1.x - pt2.x);drawBox.height = abs(pt1.y - pt2.y);drawBox = drawBox&Rect(0, 0, frame.cols, frame.rows);//防止框超出图像范围rectVec.push_back(drawBox);}
(2)按键程序:
while (1){//rectangle(temImg, pt1, pt2, red);if (!rectVec.empty()){stringstream tems;vector<Rect>::iterator it = rectVec.begin();int i = 0;while (it != rectVec.end()){rectangle(temImg, *it, red);//画所有确定的标注框i++;string str;tems << i;tems >> str;tems.clear();int x = ((*it).x - 2) > 0 ? ((*it).x - 2) : 0;int y = ((*it).y - 3) > 0 ? ((*it).y - 3) : 0;Point pt = Point(x, y);putText(temImg, str + "th", pt, FONT_HERSHEY_SIMPLEX, 0.8, white, 2);//写框号++it;}}stringstream ss;string strg1,strg2;strg2 = "BiaoZhu(";switch ((char)waitKey(1))//按键功能{case 'd'://撤销上一个标注框if (!rectVec.empty()){rectVec.pop_back();}break;case 'c'://清除所有标注框rectVec.clear();break;case 'p'://暂停视频isPause = !(isPause);break;case 's'://保存标注结果ss << num;ss >> strg1;imwrite(strg2 + strg1 + ").jpg", temImg);num++;break;}imshow(windowname, temImg);if (isPause == false){cap >> frame;if (frame.empty()){cout << "End this Video !" << endl;break;}}frame.copyTo(temImg);if ((char)waitKey(10) == 'q')break;//退出程序}完整程序:http://download.csdn.net/detail/u014019842/7888765
0 0
- OpenCV 2之视频标注
- 【OpenCV】视频标注工具
- 【OpenCV】视频标注工具
- opencv +MFC实现视频播放、暂停、视频标注、跟踪
- openCV 之 读取视频
- opencv 之 视频播放控制
- opencv 之 视频播放控制
- opencv 之 视频播放控制
- opencv 学习之 视频读取
- opencv 学习之 视频存储
- OpenCV之处理视频帧
- OpenCV学习之播放视频
- Opencv学习笔记之 视频
- opencv之视频播放控制
- 视频标注工具
- 视频标注工具
- 视频标注工具
- OpenCV入门之播放AVI视频
- Docker源码分析(一):Docker架构
- C#开发工程师
- MYSQL小技巧(PHP)
- Http Session&Cookies
- ASP.NET 4.5 MVC 4 无法在Windows2008的IIS7.0上解决方案
- OpenCV 2之视频标注
- 神经网络工具箱-matlab 详细解释
- 使用SurfaceView实现系统信息显示
- 一点思考和新学年目标
- Android项目Tab类型主界面大总结 Fragment+TabPageIndicator+ViewPager
- velocity 语法总结
- poj 2352
- POJ 1269 Intersecting Lines(直线相交的判断)
- Matlab)实现HSV非等间隔量化--相似判断:欧式距离--输出图片-