opencv集成了很多对视频处理的函数,这里最简单就是读入一个视频后然后重建外加一个简单的canny方法
void canny(Mat &image,Mat &out)
{
if (image.channels()==3)
{
cvtColor(image,out,CV_RGB2GRAY);
}
cv::Canny(out,out,100,200);
threshold(out,out,128,255,THRESH_BINARY_INV);
}
int main()
{
VideoCapture capture("D:\\images\\bike.avi");
if (!capture.isOpened())
{
cout<<"cannot open this video"<<endl;
system("pause");
return -1;
}
double rate = capture.get(CV_CAP_PROP_FPS);
bool stop(false);
Mat frames;
namedWindow("extracted frame",CV_WINDOW_AUTOSIZE);
int delay = 200/rate;
cout<<"rate:"<<rate<<endl;
cout<<"Count:"<<capture.get(CV_CAP_PROP_FRAME_COUNT)<<endl;
while(!stop)
{
if (!capture.read(frames))
{
break;
}
canny(frames,frames);
imshow("extracted frame",frames);
//waitKey(0);
if (waitKey(delay)>=0)
{
stop = true;
}
}
capture.release();
return 0;
}