搜档网
当前位置:搜档网 › opencv代码

opencv代码

// TODO: 在此添加控件通知处理程序代码
//IplImage *src; // 定义IplImage指针变量src
// src = cvLoadImage("D:\\me.bmp",-1); // 将src指向当前工程文件目录下的图像me.bmp
// cvNamedWindow("me",0);//定义一个窗口名为lena的显示窗口
// cvShowImage("me",src);//在lena窗口中,显示src指针所指向的图像
// cvWaitKey(0);//无限等待,即图像总显示
// cvDestroyWindow("me");//销毁窗口lena
// cvReleaseImage(&src);//释放IplImage指针src

CDC *pDC = GetDlgItem(IDC_STATIC)->GetDC();//根据ID获得窗口指针再获取与该窗口关联的上下文指针
HDC hdc = pDC->GetSafeHdc(); // 获取设备上下文句柄
CRect rect;
// 矩形类
GetDlgItem(IDC_STATIC)->GetClientRect(&rect); //获取box1客户区


CvCapture *capture = cvCreateFileCapture("C:/Users/joureny/Desktop/AAA.avi"); //读取视频
if (capture == NULL) {
printf("NO capture"); //读取不成功,则标识
//return 1;
};
double fps = cvGetCaptureProperty(capture, CV_CAP_PROP_FPS); //读取视频的帧率
int vfps = 1000 / fps; //计算每帧播放的时间
printf("%5.1f\t%5d\n", fps, vfps);
double frames = cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_COUNT);//读取视频中有多少帧
printf("frames is %f\n", frames);
//cvNamedWindow("example",CV_WINDOW_AUTOSIZE); //定义窗口
IplImage *frame;

CvvImage cimg;

while (1) {
frame = cvQueryFrame(capture); //抓取帧
cimg.CopyOf(frame,frame->nChannels);
cimg.DrawToHDC(hdc, &rect);
float ratio = cvGetCaptureProperty(capture, CV_CAP_PROP_POS_AVI_RATIO); //读取该帧在视频中的相对位置
printf("%f\n", ratio);
if (!frame)break;
//cvShowImage("IDC_STATIC",frame); //显示

char c = cvWaitKey(vfps);
if (c == 27)break;
}
ReleaseDC(pDC);
cvReleaseCapture(&capture);
cvDestroyWindow("example");

相关主题