一、鼠标截图

 #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)、鼠标截图,滑动条播放视频的更多相关文章

  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. python list seq

    //test.py list1 = [1, 2, 3]list2 = [4, 5, 6] print cmp(list1, list2)print len(list1), len(list2)prin ...

  2. jmeter BeanShell断言(一)

    原文地址https://blog.csdn.net/lijing742180/article/details/81157947 原文地址https://blog.csdn.net/zailushang ...

  3. vim自动安装插件Vundle

    https://github.com/VundleVim/Vundle.vim Set up Vundle: git clone https://github.com/VundleVim/Vundle ...

  4. 学习笔记: ES7(ES2016)新功能

    ES7添加了两个新功能 : 1. Array.prototype.includes() 2. 指数运算符 1 .Array.prototype,includes() 判断指定的元素是否存在于数组中,  ...

  5. List<String> 2List <Long>

    public static List<Integer> CollStringToIntegerLst(List<String> inList){ List<Integer ...

  6. Hello py

    https://www.cnblogs.com/AdaminXie/p/8339863.html https://www.cnblogs.com/-clq/p/8340515.html https:/ ...

  7. 水题C

    某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置:数轴上的每个整数点,即0,1,2,……,L,都种有一棵树. ...

  8. Visual Studio快捷键查询

    Ctrl+E,D —-格式化全部代码  Ctrl+E,F —-格式化选中的代码  CTRL + SHIFT + B生成解决方案  CTRL + F7 生成编译  CTRL + O 打开文件  CTRL ...

  9. VS 统计整个项目总的代码行数

    vs如何快速统计项目总代码行数呢,如下: vs编辑 | 查找和替换 | 在文件中查找 查找选项选 选择正则表达式 ^b*[^:b#/]+.*$ 设置如下:  结果在查找结果的最后一行,如下 

  10. python ---多进程 Multiprocessing

    和 threading 的比较 多进程 Multiprocessing 和多线程 threading 类似, 他们都是在 python 中用来并行运算的. 不过既然有了 threading, 为什么 ...