资源简介
调用摄像头实时采集图像与背景图像进行差分,检测采集图像与背景图像的差别,显示有差别的图像。
代码片段和文件信息
#include
#include
using namespace cv;
using namespace std;
#include
#include
#include
#include
int main()
{
IplImage* pSaveframe=NULL;
IplImage* src1=NULL;//加载背景图
CvCapture* capture=cvCaptureFromCAM(0);
CvVideoWriter* video=NULL;
IplImage* frame=NULL;
char filename[100];
char filename2[100];
char filename3[100];
char windowname2[100];
int i=1;
int p[3];
p[0] = CV_IMWRITE_JPEG_QUALITY;
p[1] = 10; //质量值
p[2] = 0;
int n;
if(!capture) //如果不能打开摄像头给出警告
{
cout<<“Can not open the camera.“< return -1;
}
else
{
frame=cvQueryframe(capture); //首先取得摄像头中的一帧
video=cvCreateVideoWriter(“camera.avi“-115 cvSize(frame->widthframe->height)); //创建CvVideoWriter对象并分配空间
//保存的文件名为camera.avi,编码要在运行程序时选择,大小就是摄像头视频的大小,帧频率是32
if(video) //如果能创建CvVideoWriter对象则表明成功
{
cout<<“VideoWriter has created.“< }
cvNamedWindow(“Camera Video“1); //新建一个窗口
while(1)
{
for(i=1;i<100;i++)
{
frame=cvQueryframe(capture); //从CvCapture中获得一帧
if(!frame)
{
cout<<“Can not get frame from the capture.“< break;
}
n=cvWriteframe(videoframe); //判断是否写入成功,如果返回的是1,表示写入成功
cout<
cvShowImage(“Camera Video“frame); //显示视频内容的图片
pSaveframe=cvCreateImage(cvSize(frame->widthframe->height)frame->depthframe->nChannels);
sprintf_s(filename“采集图像\\%d.jpg“i);
cvResize(framepSaveframeCV_INTER_LINEAR);
cvSaveImage(filenamepSaveframep);
cvReleaseImage(&pSaveframe);
sprintf(filename2“图像\\灰度运算%d.jpg“i);
sprintf(windowname2“window2%d.jpg“i);
//对各变量命名-----------------------------------------------
IplImage* shipin=cvLoadImage(filename1);//读取图像
IplImage* image2=cvCreateImage(cvGetSize(shipin)IPL_DEPTH_8U1);//建立处理后的图像格式
IplImage* image3=cvCreateImage(cvGetSize(shipin)IPL_DEPTH_8U1);
CvMat* pGrayMat7 = NULL;
pGrayMat7 = cvCreateMat(shipin->height shipin->width CV_32FC1);
BYTE data1; //中间过程变量
BYTE data2;
BYTE data3;
BYTE data7;
for(int j=0; jheight; j++)
{
for(int i=0; iwidth; i++)
{
data1 = (BYTE)shipin->imageData[j*shipin->widthStep + i*3]; //B分量
data2 = (BYTE)shipin->imageData[j*shipin->widthStep + i*3 + 1]; //G分量
data3 = (BYTE)shipin->imageData[j*shipin->widthStep + i*3 + 2]; //R分量
data7 = (BYTE)(0.11*data1 + 0.59*data2 + 0.30*data3);
cvmSet(pGrayMat7 j i data7);
}
}
cvConvert(pGra
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1321984 2016-10-18 11:15 shipin2\Debug\shipin.pdb
文件 53936128 2016-12-12 15:37 shipin2\ipch\shipin-634d39fe\shipin-945f0e31.ipch
文件 10752 2016-12-12 16:38 shipin2\Release\shipin.exe
文件 1010688 2016-12-12 16:38 shipin2\Release\shipin.pdb
文件 0 2016-12-08 14:09 shipin2\shipin\camera.avi
文件 666 2016-12-08 10:49 shipin2\shipin\Debug\cl.command.1.tlog
文件 20230 2016-12-08 10:49 shipin2\shipin\Debug\CL.read.1.tlog
文件 360 2016-12-08 10:49 shipin2\shipin\Debug\CL.write.1.tlog
文件 2 2016-12-08 10:49 shipin2\shipin\Debug\li
文件 2 2016-12-08 10:49 shipin2\shipin\Debug\li
文件 2 2016-12-08 10:49 shipin2\shipin\Debug\li
文件 2 2016-12-08 10:49 shipin2\shipin\Debug\li
文件 2 2016-12-08 10:49 shipin2\shipin\Debug\li
文件 2 2016-12-08 10:49 shipin2\shipin\Debug\li
文件 2 2016-12-08 10:49 shipin2\shipin\Debug\li
文件 2 2016-12-08 10:49 shipin2\shipin\Debug\li
文件 2 2016-12-08 10:49 shipin2\shipin\Debug\li
文件 2 2016-12-08 10:49 shipin2\shipin\Debug\li
文件 2 2016-12-08 10:49 shipin2\shipin\Debug\li
文件 121117 2016-12-08 10:49 shipin2\shipin\Debug\main.obj
文件 386 2016-10-18 11:15 shipin2\shipin\Debug\mt.command.1.tlog
文件 330 2016-10-18 11:15 shipin2\shipin\Debug\mt.read.1.tlog
文件 330 2016-10-18 11:15 shipin2\shipin\Debug\mt.write.1.tlog
文件 534 2016-10-18 11:15 shipin2\shipin\Debug\rc.command.1.tlog
文件 302 2016-10-18 11:15 shipin2\shipin\Debug\rc.read.1.tlog
文件 310 2016-10-18 11:15 shipin2\shipin\Debug\rc.write.1.tlog
文件 406 2016-10-18 11:15 shipin2\shipin\Debug\shipin.exe.em
文件 472 2016-10-18 11:15 shipin2\shipin\Debug\shipin.exe.em
文件 381 2016-10-18 11:15 shipin2\shipin\Debug\shipin.exe.intermediate.manifest
文件 65 2016-12-08 10:49 shipin2\shipin\Debug\shipin.lastbuildstate
............此处省略89个文件信息
评论
共有 条评论