//+++++++++++++++++++++++++++++++++++++++++++++++
//++++++++=====+++读入视频文件++++++++++++++++++++
//+++++++++++++++加入滚动条控制+++++++++++++++++++
//+++++++++++++++++转换为灰度图+++++++++++++++++++
//===============================================
#include "cv.h"
#include "highgui.h"
#include "cxcore.h"
int g_slider_position = 0;
CvCapture* g_capture = NULL;
void onTrackbarSlide(int pos) {
cvSetCaptureProperty(
g_capture,
CV_CAP_PROP_POS_FRAMES,
pos
);
}
/*void cvConvertImage(
const CvArr* src,
CvArr* dst,
int flags = 0
);
IplImage* doCanny(
IplImage* image,
double lowThresh,
double highThresh,
double aperture,
)
{
if(image->nChannels !=1)
return(0);
IplImage* out = cvCreateImage(
cvSize( cvGetSize( image )),
IPL_DEPTH_8U,
1
);
cvCanny( image, out, lowThresh, highThresh, aperture );
return( out );
};
*/
int main( int argc, char** argv) {
cvNamedWindow( "avi", CV_WINDOW_AUTOSIZE );
g_capture = cvCreateFileCapture( argv[1]);
int frames = (int) cvGetCaptureProperty(
g_capture,
CV_CAP_PROP_FRAME_COUNT
);
if( frames!= 0 ) {
cvCreateTrackbar(
"position",
"avi",
&g_slider_position,
frames,
onTrackbarSlide
);
}
IplImage* frame1;
IplImage* frame2;
while(1){
frame1 = cvQueryFrame( g_capture );
if( !frame1 ) break;
frame2 = frame1;
cvConvertImage(frame1, frame2, 0 );
//cvConvertImage(frame1, frame2,CV_RGB2GRAY);
//IplImage* out = cvCanny(frame1,10,100,3);
//cvCanny( frame1, frame2, lowThresh, highThresh, aperture );
cvShowImage("avi", frame2 );
//cvShowImage("avi", out );
char c = cvWaitKey(33);
if ( c == 27) break;
}
cvReleaseCapture( &g_capture );
cvDestroyWindow( "avi" );
}