摄像头编程并且对图像的处理以及直方图的算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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())
{}