OpenCv 鼠标截图 滑动播放视频

版权声明:欢迎转载,转载请附上链接 https://blog.csdn.net/chenbeifang/article/details/89916586
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;

#define SliderVideo//ClipImage

Mat img = imread("E:/test/MySource/OpenCV/OpenCv3/1.jpg");
Mat temp = img.clone();
Mat ROI;
Point pt;
bool flag = false;
Mutex mutex;
void onMouse(int event, int x, int y, int flag, void *param)
{
	switch (event)
	{
	case CV_EVENT_LBUTTONDOWN:
		flag = true;
		pt.x = x;
		pt.y = y;
		break;
	case CV_EVENT_LBUTTONUP:
		flag = false;
		if (x - pt.x > 0 && y - pt.y > 0) {
			ROI = temp(Rect(pt.x, pt.y, x - pt.x, y - pt.y));
			imshow("ROI", ROI);
		}
		break;
	case CV_EVENT_MOUSEMOVE:
		if (flag)
		{
			temp.copyTo(img);
			rectangle(img, pt, Point(x, y), Scalar(0, 255, 0), 2, 8);
		}
		break;
	default:
		break;
	}
}

int value;
void onChange(int, void *param)
{
	VideoCapture cap = *(VideoCapture *)param;
	cap.set(CV_CAP_PROP_POS_FRAMES, value);//设置视频帧位置
}

int main()
{
#ifdef ClipImage
	namedWindow("mouse", CV_WINDOW_AUTOSIZE);
	setMouseCallback("mouse", onMouse, 0);
	while (1)
	{
		imshow("mouse", img);
		if (27 == waitKey(10))
			break;
	}
#endif // ClipImage

#ifdef SliderVideo
	Mat frame;
	char strFps[20];
	VideoCapture cap;
	cap.open("C:/MyUpload/c/1/第1题.mp4");
	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 (1)
		{
			double fps = cap.get(CV_CAP_PROP_FPS);
			sprintf_s(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(5, 30), CV_FONT_HERSHEY_COMPLEX_SMALL, 1, Scalar(0, 255, 0), 2, 8);
				imshow("video", frame);
				
			}if (27 == waitKey(1000 / fps))
				break;
		}
	}

#endif
    //std::cout << "Hello World!\n"; 
}

猜你喜欢

转载自blog.csdn.net/chenbeifang/article/details/89916586
今日推荐