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 开发笔记 cocoapods 配置遇到的问题
当使用svn的时候,每次使用pods update,都会出现一个问题,原来所有的第三方类库里面的.svn都被删除了.提交上svn服务器时,会要求提交全部.如果只是提交如MJExtension这个类库, ...
- Python实现selenium回放时间设置
一般在做selenium时会有,回放快慢的需求. 实现思路: 1.一般写selenium会自定义findelement函数,来实现查找元素. 2.在查找函数上加个睡眠时间的装饰器,函数执行完等待若干秒 ...
- java 之多线程
多线程基本概念_程序_线程 1.1程序.进程.线程 程序:Program是一个指令的集合 进程:Process(正在执行中的程序)是一个静态的概念.进程是程序的一次静态执行过程,占用特定的地址空间.每 ...
- JavaScript 创建和浅析自定义对象
在Js中,除了Array.Date.Number等内置对象外,开发者可以通过Js代码创建自己的对象. 目录 1. 对象特性:描述对象的特性 2. 创建对象方式:对象直接量.new 构造函数.Objec ...
- 如何删除WINDOWS中服务中不再使用的服务?
右键选择那个不需要的服务,点击属性,看到"服务名",拷贝下来 然后通过管理员的方式进入到控制台,输入 sc delete "你刚才拷贝的服务名" ,就行了,注意 ...
- (转)Properties Editor为你解除通过native2ascii进行Unicode转码的烦恼
在Java或J2EE应用程序的设置文件或国际化对应的桌面应用程序的开发中,广泛使用着属性文件.然而,你必须通过J2SDK中的native2ascii工具来将文件中的多字节字符转换成Unicode的字符 ...
- sqlserver Distributed Transaction 分布式事务
在webapi+ef+sqlserver开发项目时,利用transcope实现应用层级的事务时,偶尔会报分布式事务错误,而且很而复现,特别蛋疼.现将自己的解决方法初步整理下. 分析原因:搭建repos ...
- windows假装更新升级
http://fakeupdate.net/ 进入这个网站,选择一款系统界面,按F11进去全屏 比较有趣
- html5-基本知识小结及补充
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- Thinking-Bear magic (计算几何)
---- 点我 ---- 题目大意: 给你一个正n边形及边长 a和一个正整数L, 求正多边形的面积s,若s大于L,则连接相邻两边的中点,形成新的正多边形,重复这个操作直至s小于L:如图: 正多边形的面 ...