opencv学习之路(6)、鼠标截图,滑动条播放视频
一、鼠标截图
- #include<opencv2/opencv.hpp>
- #include<iostream>
- using namespace cv;
- using namespace std;
- Mat img=imread("E://1.jpg");
- Mat temp=img.clone();
- Mat ROI;
- Point pt;
- bool flag=false;
- void onMouse(int event,int x,int y,int flag,void* param){
- switch (event)
- {
- case CV_EVENT_LBUTTONDOWN://鼠标左键按下
- //cout<<"鼠标左键按下"<<endl;
- flag=true;
- pt.x=x;
- pt.y=y;
- break;
- case CV_EVENT_MOUSEMOVE://鼠标移动
- //cout<<"鼠标移动"<<endl;
- if(flag){
- temp.copyTo(img);//temp复制给img(相当于恢复成原图),以便永远只有一个矩形(否则许多矩形会重叠在一起)
- rectangle(img,pt,Point(x,y),Scalar(,,),,);
- }
- break;
- case CV_EVENT_LBUTTONUP://鼠标左键抬起
- //cout<<"鼠标抬起"<<endl;
- flag=false;
- //ROI=img(Rect(pt.x,pt.y,x-pt.x,y-pt.y));//确定ROI区域,有矩形边框
- ROI=temp(Rect(pt.x,pt.y,x-pt.x,y-pt.y));//无矩形边框
- imshow("ROI",ROI);
- imwrite("E://ROI.jpg",ROI);
- break;
- default:
- break;
- }
- }
- void main(){
- namedWindow("mouse",CV_WINDOW_AUTOSIZE);
- setMouseCallback("mouse",onMouse,);
- while(){
- imshow("mouse",img);
- if(==waitKey())//esc跳出循环
- break;
- }
- }
二、滑动条视频播放
- #include<opencv2/opencv.hpp>
- #include<iostream>
- using namespace cv;
- using namespace std;
- int value;
- void onChange(int,void* param){
- VideoCapture cap=*(VideoCapture*)param;
- cap.set(CV_CAP_PROP_POS_FRAMES,value);//设置视频帧位置
- }
- void main(){
- Mat frame;
- char strFps[];
- VideoCapture cap("E://2.avi");
- namedWindow("video",CV_WINDOW_AUTOSIZE);
- int frameCount=cap.get(CV_CAP_PROP_FRAME_COUNT);//获取视频总帧数
- createTrackbar("Frame","video",&value,frameCount,onChange,&cap);
- if(cap.isOpened()){//如果视频成功打开
- while(){
- double Fps=cap.get(CV_CAP_PROP_FPS);//获得视频帧率
- sprintf(strFps,"Fps%0.1f/s",Fps);//格式化字符串
- int framePos=cap.get(CV_CAP_PROP_POS_FRAMES);//获取视频帧位置
- setTrackbarPos("Frame","video",framePos);//设置滑动条位置
- cap>>frame;
- if(!frame.empty()){//如果该帧不为空
- putText(frame,strFps,Point(,),CV_FONT_HERSHEY_COMPLEX_SMALL,,Scalar(,,),,);
- imshow("video",frame);
- if(==waitKey(/Fps))//esc退出,1000/Fps毫秒刷新
- break;
- }
- }
- }
- }
opencv学习之路(6)、鼠标截图,滑动条播放视频的更多相关文章
- 【opencv学习笔记八】创建TrackBar轨迹条
createTrackbar这个函数我们以后会经常用到,它创建一个可以调整数值的轨迹条,并将轨迹条附加到指定的窗口上,使用起来很方便.首先大家要记住,它往往会和一个回调函数配合起来使用.先看下他的函数 ...
- opencv学习之路(5)、鼠标和滑动条操作
一.鼠标事件 #include<opencv2/opencv.hpp> #include<iostream> using namespace cv; using namespa ...
- opencv学习之路(29)、轮廓查找与绘制(八)——轮廓特征属性及应用
一.简介 HSV颜色空间(hue色调,saturation饱和度,value亮度) 二.HSV滑动条 #include "opencv2/opencv.hpp" #include ...
- opencv学习之路(32)、角点检测
一.角点检测的相关概念 二.Harris角点检测——cornerHarris() 参考网址: http://www.cnblogs.com/ronny/p/4009425.html #include ...
- opencv学习之路(12)、图像滤波
一.图像滤波简介 二.方框滤波——boxFilter() #include<opencv2/opencv.hpp> using namespace cv; void main(){ Mat ...
- 利用OpenCV和MFC对话框建设一个有滑动条控制的播放器--转
(一)问题的提出: OpenCV有一个很简单的播放视频文件并加载滑动条的程序,但是如何用MFC对话框来创建一个有滑动条控制的播放器呢,网络上四处搜索都没有代码可以参考,下的都是些骗子链接文件,很过分, ...
- IOS学习之路六(UITableView滑动删除指定行)
滑动删除指定行代码如下: Controller.h文件 #import <UIKit/UIKit.h> @interface TableViewController : UIViewCon ...
- opencv学习之路(31)、GrabCut & FloodFill图像分割
一.GrabCut 1.利用Rect做分割 #include "opencv2/opencv.hpp" using namespace cv; void main() { Mat ...
- opencv学习之路(30)、分水岭算法及图像修补
一.简介 二.分水岭算法 #include "opencv2/opencv.hpp" using namespace cv; void main() { Mat srcImg = ...
随机推荐
- iOS 开发笔记-加载/初始化
ViewDidLoad 一般我们会在这里做界面上的初始化操作,比如往view中添加一些子视图.从数据库或者网络加载模型数据装配到子视图中 在自定义控制里 initWithFrame:一般用于添加控件, ...
- vue父组件数据改变,子组件数据并未发生改变(那是因为你没写监听)附带子组件的写法
下面的代码有 父组件有三个按钮,年.月.日 点击之后父组件的数据发生改变,子组件却没改变,打印接受的数据,除了第一次其他都没打印,那是因为你没有写监听 <template> <div ...
- shell编程:for循环
有几个参数执行几次 do done取代了{} 这种用于 文件的个数,用户的个数等. (())里才可以进行加减乘除.
- 16.和input相关的知识点
1.改变input里面placeholder颜色 <input class="pre_name" type="text" placeholder=&quo ...
- 同一个电脑安装两个jdk版本
同一个电脑安装两个jdk版本 场景:公司项目使用的jdk为1.,最近不是很忙,学习scala.该系统使用到了jdk1.8的特性,所以I need 俩版本,开整!!! . 准备两个版本的jdk我的两个j ...
- Mysql 修改字段长度、修改列名、新增列、修改自增主键起始值
alter table 表名 modify column 字段名 类型; 例如 数据库中user表 name字段是varchar(30) 可以用 ) ; --修改字段长度 )--修改表列名 ); -- ...
- netframework转core时文件响应流问题
做将framework webapi项目转成netcore平台上的webapi项目时,发现原来的返回文件响应流在netcore平台下失效.代码如下,返回pdf文件响应流,供前端显示 /// <s ...
- idea上将项目上传到github
1.下载并安装好git,然后配置git的path路径.再配置git的全局用户名和邮箱. 2.注册github账号,如果已经有github账号,则此步骤可以省略. 3.在idea中配置git,配置如下: ...
- Mysql版本java问题(com.mysql.cj.jdbc.Driver和com.mysql.jdbc.Driver)
老版本com.mysql.jdbc.Driver已弃用 String url1 = "jabc:mysql://127.0.0.1:3306/test"; String url1 ...
- 代码审查Code Review
代码审查清单 常规项 代码能够工作么?它有没有实现预期的功能,逻辑是否正确等. 所有的代码是否简单易懂? 代码符合你所遵循的编程规范么?这通常包括大括号的位置,变量名和函数名,行的长度,缩进,格式和注 ...