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網站上下載
0 意見:
張貼留言