#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";
}