資源簡介
在vs2010中建立MFC對話框,通過opencv實現圖像的采集、保存、播放本地視頻、通過滑塊控制播放進度。
代碼片段和文件信息
#include?“StdAfx.h“
#include?“CvvImage.h“
//////////////////////////////////////////////////////////////////////
//?Construction/Destruction
//////////////////////////////////////////////////////////////////////
CV_INLINE?RECT?NormalizeRect(?RECT?r?);
CV_INLINE?RECT?NormalizeRect(?RECT?r?)
{
???int?t;
???if(?r.left?>?r.right?)
???{
??????t?=?r.left;
??????r.left?=?r.right;
??????r.right?=?t;
???}
???if(?r.top?>?r.bottom?)
???{
??????t?=?r.top;
??????r.top?=?r.bottom;
??????r.bottom?=?t;
???}
???return?r;
}
CV_INLINE?CvRect?RectToCvRect(?RECT?sr?);
CV_INLINE?CvRect?RectToCvRect(?RECT?sr?)
{
???sr?=?NormalizeRect(?sr?);
???return?cvRect(?sr.left?sr.top?sr.right?-?sr.left?sr.bottom?-?sr.top?);
}
CV_INLINE?RECT?CvRectToRect(?CvRect?sr?);
CV_INLINE?RECT?CvRectToRect(?CvRect?sr?)
{
???RECT?dr;
???dr.left?=?sr.x;
???dr.top?=?sr.y;
???dr.right?=?sr.x?+?sr.width;
???dr.bottom?=?sr.y?+?sr.height;
???return?dr;
}
CV_INLINE?IplROI?RectToROI(?RECT?r?);
CV_INLINE?IplROI?RectToROI(?RECT?r?)
{
???IplROI?roi;
???r?=?NormalizeRect(?r?);
???roi.xOffset?=?r.left;
???roi.yOffset?=?r.top;
???roi.width?=?r.right?-?r.left;
???roi.height?=?r.bottom?-?r.top;
???roi.coi?=?0;
???return?roi;
}
void??FillBitmapInfo(?BITMAPINFO*?bmi?int?width?int?height?int?bpp?int?origin?)
{
???assert(?bmi?&&?width?>=?0?&&?height?>=?0?&&?(bpp?==?8?||?bpp?==?24?||?bpp?==?32));
???BITMAPINFOHEADER*?bmih?=?&(bmi->bmiHeader);
???memset(?bmih?0?sizeof(*bmih));
???bmih->biSize?=?sizeof(BITMAPINFOHEADER);
???bmih->biWidth?=?width;
???bmih->biHeight?=?origin???abs(height)?:?-abs(height);
???bmih->biPlanes?=?1;
???bmih->biBitCount?=?(unsigned?short)bpp;
???bmih->biCompression?=?BI_RGB;
???if(?bpp?==?8?)
???{
??????RGBQUAD*?palette?=?bmi->bmiColors;
??????int?i;
??????for(?i?=?0;?i?256;?i++?)
??????{
?????????palette[i].rgbBlue?=?palette[i].rgbGreen?=?palette[i].rgbRed?=?(BYTE)i;
?????????palette[i].rgbReserved?=?0;
??????}
???}
}
CvvImage::CvvImage()
{
???m_img?=?0;
}
void?CvvImage::Destroy()
{
???cvReleaseImage(?&m_img?);
}
CvvImage::~CvvImage()
{
???Destroy();
}
bool??CvvImage::Create(?int?w?int?h?int?bpp?int?origin?)
{
???const?unsigned?max_img_size?=?10000;
???if(?(bpp?!=?8?&&?bpp?!=?24?&&?bpp?!=?32)?||
??????(unsigned)w?>=??max_img_size?||?(unsigned)h?>=?max_img_size?||
??????(origin?!=?IPL_ORIGIN_TL?&&?origin?!=?IPL_ORIGIN_BL))
???{
??????assert(0);?//?most?probably?it?is?a?programming?error
??????return?false;
???}
???if(?!m_img?||?Bpp()?!=?bpp?||?m_img->width?!=?w?||?m_img->height?!=?h?)
???{
??????if(?m_img?&&?m_img->nSize?==?sizeof(IplImage))
?????????Destroy();
??????/*?prepare?IPL?header?*/
??????m_img?=?cvCreateImage(?cvSize(?w?h?)?IPL_DEPTH_8U?bpp/8?);
???}
???if(?m_img?)
??????m_img->origin?=?origin?==?0???IPL_ORIGIN_TL?:?IPL_ORIGIN_BL;
???return?m_img?!=?0;
}
void??CvvImage::CopyOf(?CvvImage&?image?int?desired_color?)
{
???IplImage*?img?=?image.GetImage();
???if(?img?)
???{
??????CopyOf(?img?desired_color?);
???}
}
#define?HG_IS_IMAGE(img)?????????????????????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????198144??2016-04-26?16:45??Test\Debug\Test.exe
?????文件????1343352??2016-04-26?16:45??Test\Debug\Test.ilk
?????文件????6253568??2016-04-26?16:45??Test\Debug\Test.pdb
?????文件???????6960??2012-03-14?16:52??Test\Test\CvvImage.cpp
?????文件???????1957??2012-03-14?16:52??Test\Test\CvvImage.h
?????文件???????2910??2016-04-26?16:45??Test\Test\Debug\cl.command.1.tlog
?????文件??????98928??2016-04-26?16:45??Test\Test\Debug\CL.read.1.tlog
?????文件???????1756??2016-04-26?16:45??Test\Test\Debug\CL.write.1.tlog
?????文件?????131494??2016-04-26?16:25??Test\Test\Debug\CvvImage.obj
?????文件??????????2??2016-04-26?16:45??Test\Test\Debug\li
?????文件??????????2??2016-04-26?16:45??Test\Test\Debug\li
?????文件???????3466??2016-04-26?16:45??Test\Test\Debug\li
?????文件???????9464??2016-04-26?16:45??Test\Test\Debug\li
?????文件???????1104??2016-04-26?16:45??Test\Test\Debug\li
?????文件????????720??2016-04-26?16:45??Test\Test\Debug\mt.command.1.tlog
?????文件????????648??2016-04-26?16:45??Test\Test\Debug\mt.read.1.tlog
?????文件????????466??2016-04-26?16:45??Test\Test\Debug\mt.write.1.tlog
?????文件???????1044??2016-04-26?16:25??Test\Test\Debug\rc.command.1.tlog
?????文件???????3520??2016-04-26?16:25??Test\Test\Debug\rc.read.1.tlog
?????文件????????462??2016-04-26?16:25??Test\Test\Debug\rc.write.1.tlog
?????文件?????642708??2016-04-26?16:25??Test\Test\Debug\stdafx.obj
?????文件???????1754??2016-04-26?16:25??Test\Test\Debug\Test.Build.CppClean.log
?????文件????????915??2016-04-26?16:25??Test\Test\Debug\Test.exe.em
?????文件????????980??2016-04-26?16:25??Test\Test\Debug\Test.exe.em
?????文件????????640??2016-04-26?16:45??Test\Test\Debug\Test.exe.intermediate.manifest
?????文件?????????58??2016-04-26?16:45??Test\Test\Debug\Test.lastbuildstate
?????文件???????4768??2016-04-26?16:45??Test\Test\Debug\Test.log
?????文件??????30115??2016-04-26?16:25??Test\Test\Debug\Test.obj
?????文件???33751040??2016-04-26?16:25??Test\Test\Debug\Test.pch
?????文件??????70816??2016-04-26?16:25??Test\Test\Debug\Test.res
............此處省略37個文件信息
- 上一篇:MFC編程TCP通信程序
- 下一篇:VS2010錄音程序_音頻采集_MFC
評論
共有 條評論