一、鼠标截图

  1. #include<opencv2/opencv.hpp>
  2. #include<iostream>
  3. using namespace cv;
  4. using namespace std;
  5.  
  6. Mat img=imread("E://1.jpg");
  7. Mat temp=img.clone();
  8. Mat ROI;
  9. Point pt;
  10. bool flag=false;
  11.  
  12. void onMouse(int event,int x,int y,int flag,void* param){
  13. switch (event)
  14. {
  15. case CV_EVENT_LBUTTONDOWN://鼠标左键按下
  16. //cout<<"鼠标左键按下"<<endl;
  17. flag=true;
  18. pt.x=x;
  19. pt.y=y;
  20. break;
  21. case CV_EVENT_MOUSEMOVE://鼠标移动
  22. //cout<<"鼠标移动"<<endl;
  23. if(flag){
  24. temp.copyTo(img);//temp复制给img(相当于恢复成原图),以便永远只有一个矩形(否则许多矩形会重叠在一起)
  25. rectangle(img,pt,Point(x,y),Scalar(,,),,);
  26. }
  27. break;
  28. case CV_EVENT_LBUTTONUP://鼠标左键抬起
  29. //cout<<"鼠标抬起"<<endl;
  30. flag=false;
  31. //ROI=img(Rect(pt.x,pt.y,x-pt.x,y-pt.y));//确定ROI区域,有矩形边框
  32. ROI=temp(Rect(pt.x,pt.y,x-pt.x,y-pt.y));//无矩形边框
  33. imshow("ROI",ROI);
  34. imwrite("E://ROI.jpg",ROI);
  35. break;
  36. default:
  37. break;
  38. }
  39. }
  40.  
  41. void main(){
  42. namedWindow("mouse",CV_WINDOW_AUTOSIZE);
  43. setMouseCallback("mouse",onMouse,);
  44. while(){
  45. imshow("mouse",img);
  46. if(==waitKey())//esc跳出循环
  47. break;
  48. }
  49. }

二、滑动条视频播放

  1. #include<opencv2/opencv.hpp>
  2. #include<iostream>
  3. using namespace cv;
  4. using namespace std;
  5.  
  6. int value;
  7. void onChange(int,void* param){
  8. VideoCapture cap=*(VideoCapture*)param;
  9. cap.set(CV_CAP_PROP_POS_FRAMES,value);//设置视频帧位置
  10. }
  11.  
  12. void main(){
  13. Mat frame;
  14. char strFps[];
  15. VideoCapture cap("E://2.avi");
  16. namedWindow("video",CV_WINDOW_AUTOSIZE);
  17. int frameCount=cap.get(CV_CAP_PROP_FRAME_COUNT);//获取视频总帧数
  18. createTrackbar("Frame","video",&value,frameCount,onChange,&cap);
  19.  
  20. if(cap.isOpened()){//如果视频成功打开
  21. while(){
  22. double Fps=cap.get(CV_CAP_PROP_FPS);//获得视频帧率
  23. sprintf(strFps,"Fps%0.1f/s",Fps);//格式化字符串
  24. int framePos=cap.get(CV_CAP_PROP_POS_FRAMES);//获取视频帧位置
  25. setTrackbarPos("Frame","video",framePos);//设置滑动条位置
  26. cap>>frame;
  27. if(!frame.empty()){//如果该帧不为空
  28. putText(frame,strFps,Point(,),CV_FONT_HERSHEY_COMPLEX_SMALL,,Scalar(,,),,);
  29. imshow("video",frame);
  30. if(==waitKey(/Fps))//esc退出,1000/Fps毫秒刷新
  31. break;
  32. }
  33. }
  34. }
  35. }

opencv学习之路(6)、鼠标截图,滑动条播放视频的更多相关文章

  1. 【opencv学习笔记八】创建TrackBar轨迹条

    createTrackbar这个函数我们以后会经常用到,它创建一个可以调整数值的轨迹条,并将轨迹条附加到指定的窗口上,使用起来很方便.首先大家要记住,它往往会和一个回调函数配合起来使用.先看下他的函数 ...

  2. opencv学习之路(5)、鼠标和滑动条操作

    一.鼠标事件 #include<opencv2/opencv.hpp> #include<iostream> using namespace cv; using namespa ...

  3. opencv学习之路(29)、轮廓查找与绘制(八)——轮廓特征属性及应用

    一.简介 HSV颜色空间(hue色调,saturation饱和度,value亮度) 二.HSV滑动条 #include "opencv2/opencv.hpp" #include ...

  4. opencv学习之路(32)、角点检测

    一.角点检测的相关概念 二.Harris角点检测——cornerHarris() 参考网址: http://www.cnblogs.com/ronny/p/4009425.html #include ...

  5. opencv学习之路(12)、图像滤波

    一.图像滤波简介 二.方框滤波——boxFilter() #include<opencv2/opencv.hpp> using namespace cv; void main(){ Mat ...

  6. 利用OpenCV和MFC对话框建设一个有滑动条控制的播放器--转

    (一)问题的提出: OpenCV有一个很简单的播放视频文件并加载滑动条的程序,但是如何用MFC对话框来创建一个有滑动条控制的播放器呢,网络上四处搜索都没有代码可以参考,下的都是些骗子链接文件,很过分, ...

  7. IOS学习之路六(UITableView滑动删除指定行)

    滑动删除指定行代码如下: Controller.h文件 #import <UIKit/UIKit.h> @interface TableViewController : UIViewCon ...

  8. opencv学习之路(31)、GrabCut & FloodFill图像分割

    一.GrabCut 1.利用Rect做分割 #include "opencv2/opencv.hpp" using namespace cv; void main() { Mat ...

  9. opencv学习之路(30)、分水岭算法及图像修补

    一.简介 二.分水岭算法 #include "opencv2/opencv.hpp" using namespace cv; void main() { Mat srcImg = ...

随机推荐

  1. 线程间操作无效: 从不是创建控件“button1”的线程访问它。

    .net2后是不能跨线程访问控件的.,窗体上的控件是当前线程创建的,当用户异步执行一个方法:在该方法中给窗体上的控件赋值,记住:当执行一个异步委托的时候,其实 就是开了一个线程去执行那个方法,这样就会 ...

  2. Oracle 11g快速收集全库统计信息

    环境:Oracle 11.2.0.4 采用并行的方式,快速收集全库统计信息,多用于跨版本升级之后,对全库的统计信息重新进行快速收集: --开启计时 set timing on --设置并行收集 exe ...

  3. ecshop 订单状态

    ecshop的订单状态都是在ecs_order_info表中的字段里. 订单状态 未确认 取消 确认 已付款 配货中 已发货 已收货 退货 order_status 0 2 1 1 1 5 5 4 s ...

  4. node.js初识02

    node.js相较于那些老的服务器语言,他的优势在于,节省了I/O的时间,主要的特点是单线程,非阻塞和事件驱动,其实三个说的是同一个事情,相较于多线程而言,单线程的特点是,使用的那一条线程的cpu的利 ...

  5. 获取PC硬件硬件序列号,唯一标识一台PC

    用一个库:jydisk.dll  百度说是windows提供的C++标准动态库,很方便使用. 点击连接下载文件,里面有各种语言的调用例子,可直接使用.测试多台机器,结果靠谱.没有遇到获取出来是全零的情 ...

  6. 笔记 : WampServe加装PHP版本(7.2.3)为例

    1.由于正在学习Laravel框架,服务器wamp,Composer已搭建完成,但在安装laravel installer之后使用laravel new blog,报错为"This pack ...

  7. 16. 3Sum Closest(双指针)

    Given an array nums of n integers and an integer target, find three integers in nums such that the s ...

  8. CSS position &居中(水平,垂直)

    css position是个很重要的知识点: 知乎Header部分: 知乎Header-inner部分: position属性值: fixed:生成绝对定位的元素,相对浏览器窗口进行定位(位置可通过: ...

  9. jQuery选择器--#id、element和.class

       #id 描述 根据给定的ID匹配一个元素.使用任何的元字符作为名称的文本部分, 它必须被两个反斜杠转义:\\ 参数 id  用于搜索的,通过元素的 id 属性中给定的值 element 概述 根 ...

  10. 前端 dojo

    http://dojotoolkit.org/documentation/tutorials/1.10/hello_dojo/ html在线编辑器 国内 http://runjs.cn 国外 http ...