GUI接口的制作-"cvcam.h"视频函数库(2)

风在竹林 posted @ 2009年7月13日 06:45 in OpenCV with tags OpenCV窗口接口程序设计 , 2699 阅读

接着是另外一个实例,把它嵌入在OpenCV的GUI上,这边利用到cvGetWindowHandle()来做嵌入,当然,必须要用到cvNamedWindow()啦,再从cvGetWindowHandle()取得它的Handle,以下程序代码

cvcam.h使用OpenCV窗口接口播放视频
#include <cvcam.h>
#include <cv.h>
#include <highgui.h>
#include <stdio.h>
#include <windows.h>


void CaptureCallback(IplImage *image);
void onMouse(int Event,int x,int y,int flags,void *param);
void onTrackbar(int position);

int TrackbarInitValue=20;
int TrackbarPosition=20;

int main()
{
    cvcamGetCamerasCount();

    HWND CaptureWindow;
    cvNamedWindow("Webcam",0);
    CaptureWindow =(HWND)cvGetWindowHandle("Webcam");

    cvcamSetProperty(0,CVCAM_PROP_ENABLE,CVCAMTRUE);
    cvcamSetProperty(0,CVCAM_PROP_RENDER,CVCAMTRUE);
    cvcamSetProperty(0,CVCAM_PROP_WINDOW,&CaptureWindow);

    cvSetMouseCallback("Webcam",onMouse,NULL);
    cvCreateTrackbar("Change","Webcam",&TrackbarInitValue,255,onTrackbar);
    cvcamSetProperty(0,CVCAM_PROP_CALLBACK,(void *)&CaptureCallback);

    cvcamInit();
    cvcamStart();

    cvWaitKey(0);
    cvcamStop();
    cvcamExit();

}

void CaptureCallback(IplImage *frame)
{
    int i,j;
    for(i=0;i<frame->height;i+=TrackbarPosition)
    {
        for(j=0;j<frame->widthStep;j+=frame->nChannels)
        {
            frame->imageData[i*j] =0;
            frame->imageData[i*j+1]=0;
            frame->imageData[i*j+2]=255;
        }
    }
}
void onMouse(int Event,int x,int y,int flags,void* param )
{
    printf("0");
    if(Event==CV_EVENT_LBUTTONDOWN)
    {
        cvcamPause();
        printf("1");
    }
    else if(Event==CV_EVENT_RBUTTONDOWN)
    {
        cvcamResume();
        printf("2");
    }
}
void onTrackbar(int position)
{
    TrackbarPosition=position;
}

执行结果:


很 遗憾,OpenCV窗口程序没有提供Button的功能,要不然 cvcamStart(),cvcamPause(),cvcamResume(),cvcamStop()等可以做到如Real Player播放器一样,上面的程序代码,除了把之前不必要的属性删除加入了鼠标事件及Trackbar(),鼠标事件的设计,当按左键就暂停,按右键就 继续,Trackbar()则修改了for循环的规则.

cvcamPause()
暂停视频

cvcamResume()
从暂停中重新启动

--
附注:Opencv1.0 only,如果opencv 1.1想要使用的话,可以到sourceforge的opencv网站上下载


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter