昨天刚开始学习OpenCV,老师要求的挖,两天完成个视频加密的小东东,还好在学长的帮助下搞定了,其实相当Easy

贴下主要代码:
VOID EncryptVideo(char * szPath,char *outputPath,int key,BOOL bEncrpty)
{
int nPos=0;
IplImage* current_frame = 0;
IplImage* masked_frame = 0;
IplImage* tem_frame=0;
CvCapture* cap = 0; //读视频
CvVideoWriter* wrt = 0; //写视频
//cvNamedWindow("image show", 1);
//cap= cvCaptureFromCAM(0);//捕获摄像头
cap=cvCaptureFromAVI(szPath);
int n=0;
for( ;;)
{
if(!cvGrabFrame(cap))
break;
current_frame = cvRetrieveFrame( cap);
if (n==0)
{
wrt = cvCreateVideoWriter(outputPath,-1,15, cvGetSize(current_frame),1);
n++;
}
if(!current_frame || !wrt )
{
MessageBox(NULL,"bad video","error",MB_OK);
ExitProcess(0);
}
//加密过程
nPos=(current_frame->widthStep)*(current_frame->height);
//tem_frame=current_frame;
for (int n=0;n<nPos;n++)
{
current_frame->imageData[n]=(current_frame->imageData[n])^(key);//这里只是简单的对数据进行异或,您可以去设计更精巧的加密算法
///int temp=(current_frame->imageData[n])^(key+n);
}
cvWriteFrame(wrt, current_frame);
//cvShowImage("image show",current_frame );
if( cvWaitKey(20)>= 0 )//等待10毫秒
break;
}
cvReleaseCapture(&cap);
cvReleaseVideoWriter(&wrt);
//cvDestroyWindow("image show");
if (bEncrpty)
{
AfxMessageBox(_T("加密成功!"));
}
else
AfxMessageBox(_T("解密成功!"));
}