摄像头编程并且对图像的处理以及直方图的算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

题目:图像的基本处理班级:2011级软件2班姓名:刘磊磊

时间:20130907

摘要:随着数字化与多媒体时代的来临,数字图像处理已经成为必备的基础知识。全国各大专院校的计算机、电子、通信、医学、光学及许多相关专业都开设了与数字图像预处理相关的课程。数字图像二值化是图像预处理中的一项重要技术,其在模式识别、光学字符识别、医学成像等方面都有着重要应用。本论文主要为大家介绍24位真彩图像的灰度、二值处理以及图像的一些简单的打开和保存和如何画直方图,还有一些通过这次小学期学到的一些知识。

关键字:灰度处理,二值化

图像的打开

void CText1Dlg::ShowPic()

{

if(m_path =="") //判断图片路径是否存在

{

return;

}

hwnd = GetDlgItem(IDC_pic);

hDesDC = hwnd->GetDC()->m_hDC;

hSrcDC = CreateCompatibleDC(hDesDC);

hBitmap=(HBITMAP)LoadImage(AfxGetInstanceHandle(),m_path,IMAGE_BITMAP,0,0, LR_LOADFROMFILE|LR_CREATEDIBSECTION);

GetObject(hBitmap, sizeof(BITMAP), &bm);

SelectObject(hSrcDC, hBitmap);

hwnd->GetClientRect(&rect);

::SetStretchBltMode(hDesDC,COLORONCOLOR);

::StretchBlt(hDesDC, rect.left, rect.top, rect.right, rect.bottom, hSrcDC,

0, 0, bm.bmWidth, bm.bmHeight,+SRCCOPY);

UpdateData(false);

}

void CText1Dlg::Onopenpicture() //打开图像

{

// TODO: Add your control notification handler code here

inum = 1;

CFileDialog dlg(TRUE,"bmp",".bmp",OFN_HIDEREADONL Y,"BMP Files(*.jpg)|*.bmp||");//设置所能打开图像的格式

// CFileDialog dlg(TRUE,"jpg",".jpg",OFN_HIDEREADONL Y,"JPG Files(*.bmp)|*.jpg||");这是jpg图像的打开方式

if(dlg.DoModal() != IDOK) // dlg_jpg.DoModal()

{

return;

}

m_path = dlg.GetPathName(); //获得图片路径

UpdateData(false); //更新路径公共变量

ShowPic(); //调用显示图片函数

}

图像的保存

我的方法是先选择需要保存的图片并且这张图片是已经命名的,然后选择路径,最后用CopyFile(“原始图像全名包括扩展名”,“保存的全名包括路径+新的命名+扩展名”,false)就OK了。下面是代码:

void CForm::Onsaveroud()

{

// TODO: Add your control notification handler code here

CString strFolderPath="";

TCHAR szPath[_MAX_PA TH];

BROWSEINFO bi;

bi.hwndOwner = GetSafeHwnd();

bi.pidlRoot = NULL;

bi.lpszTitle = _T("选择文件夹");

bi.pszDisplayName = szPath;

bi.ulFlags = BIF_RETURNONL YFSDIRS;

bi.lpfn = NULL;

bi.lParam = NULL;

LPITEMIDLIST pItemIDList = SHBrowseForFolder(&bi);

if(pItemIDList)

{

if(SHGetPathFromIDList(pItemIDList,szPath))

{

strFolderPath = szPath;

}

// 防止内存泄露,要使用IMalloc接口

IMalloc* pMalloc;

if( SHGetMalloc(&pMalloc) != NOERROR )

{

TRACE(_T("无法取得外壳程序的IMalloc接口\n"));

}

pMalloc->Free(pItemIDList);

if(pMalloc)

pMalloc->Release();

}

ScanDiskFile(strFolderPath);

}

void CForm::ScanDiskFile(CString& strPath)

{

CFileFind find;

CString strTemp = strPath;

CString strDirectory = strPath + _T("\\") + _T("\\*.*");

CString strFile;

BOOL IsFind = find.FindFile(strDirectory);

IsFind=find.FindNextFile();

// 如果是"." 则不扫描

if(find.IsDots())

{}

相关文档
最新文档