云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 图像处理opencv代码

图像处理opencv代码

  • 62 次阅读
  • 3 次下载
  • 2025/6/24 22:16:39

}

void CmymfcDlg::OnBnClickedReadimg() //读取图片操作 { // TODO: 在此添加控件通知处理程序代码 // 这里用CFileDialog来选择图片 CFileDialog dlg( TRUE, _T(\ OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY, _T(\ );

// 打开文件对话框的标题名

dlg.m_ofn.lpstrTitle = _T(\

// 判断是否获得图片 if( dlg.DoModal() != IDOK ) return; // 获取图片路径 CString mPath = dlg.GetPathName(); rePath = mPath; // 读取图片 IplImage* ipl = cvLoadImage( mPath, 1 ); // 判断是否成功读取图片 if( !ipl ) return; if( TheImage ) cvZero( TheImage ); ResizeImage( ipl ); ShowImage( TheImage,IDC_ShowImg); cvReleaseImage( &ipl ); }

void CmymfcDlg::ShowImage(IplImage* img, UINT ID) // ID 是Picture Control控件的ID号 { // 获得显示控件的 DC

CDC* pDC = GetDlgItem( ID ) ->GetDC(); // 获取 HDC(设备句柄) 来进行绘图操作 HDC hDC = pDC ->GetSafeHdc(); CRect rect;

GetDlgItem(ID) ->GetClientRect( &rect ); // 求出图片控件的宽和高 int rw = rect.right - rect.left; int rh = rect.bottom - rect.top; // 读取图片的宽和高 int iw = img->width; int ih = img->height;

// 使图片的显示位置正好在控件的正中 int tx = (int)(rw - iw)/2; int ty = (int)(rh - ih)/2;

SetRect( rect, tx, ty, tx+iw, ty+ih );

// 复制图片 CvvImage cimg; cimg.CopyOf( img ); // 将图片绘制到显示控件的指定区域内 cimg.DrawToHDC( hDC, &rect ); ReleaseDC( pDC ); }

void CmymfcDlg::ResizeImage(IplImage* img) { // 读取图片的宽和高 int w = img->width; int h = img->height;

// 找出宽和高中的较大值者 int max = (w > h)? w: h;

// 计算将图片缩放到TheImage区域所需的比例 float scale = (float) ( (float) max / 256.0f ); // 缩放后图片的宽和高 int nw = (int)( w/scale ); int nh = (int)( h/scale ); // 为了将缩放后的图片存入 TheImage 的正中部位,需计算图片在 TheImage 左上角的期望坐标值

}

int tlx = (nw > nh)? 0: (int)(256-nw)/2; int tly = (nw > nh)? (int)(256-nh)/2: 0;

// 设置 TheImage 的 ROI 区域,用来存入图片 img cvSetImageROI( TheImage, cvRect( tlx, tly, nw, nh) ); // 对图片 img 进行缩放,并存入到 TheImage 中 cvResize( img, TheImage );

// 重置 TheImage 的 ROI 准备读入下一幅图片 cvResetImageROI( TheImage );

void CmymfcDlg::OnBnClickedEdgedetect() //Canny算法的边缘检测 {

// TODO: 在此添加控件通知处理程序代码 IplImage *gray = 0, *edge = 0;

gray = cvCreateImage( cvSize(IMAGE_WIDTH, IMAGE_HEIGHT), IPL_DEPTH_8U, 1 ); edge = cvCreateImage( cvSize(IMAGE_WIDTH, IMAGE_HEIGHT), IPL_DEPTH_8U, 1 ); cvCvtColor( TheImage, gray, CV_BGR2GRAY ); cvCanny( gray, edge, 30, 100, 3 );

ShowImage( edge, IDC_ShowImg ); // 调用显示图片函数

cvReleaseImage( &gray ); cvReleaseImage( &edge ); }

void CmymfcDlg::OnBnClickedRefresh() //恢复图片 { // TODO: 在此添加控件通知处理程序代码 //将读入的图片路径传给mPath CString mPath = rePath; // 读取图片、缓存到一个局部变量 ipl 中 IplImage* ipl = cvLoadImage( mPath, 1 ); // 判断是否成功读取图片 if( !ipl ) return; // 对上一幅显示的图片数据清零 if( TheImage ) cvZero( TheImage ); // 对读入的图片进行缩放,使其宽或高最大值者刚好等于 256,再复制到 TheImage 中 ResizeImage( ipl );

}

// 调用显示图片函数

ShowImage( TheImage,IDC_ShowImg);

void CmymfcDlg::OnBnClickedGrayprocess() //灰度图像的转化 { // TODO: 在此添加控件通知处理程序代码 IplImage *gray = 0;

gray = cvCreateImage( cvSize(IMAGE_WIDTH, IMAGE_HEIGHT), IPL_DEPTH_8U, 1 ); cvCvtColor( TheImage, gray, CV_RGB2GRAY ); ShowImage( gray, IDC_ShowImg ); }

//释放图片的内存空间 cvReleaseImage( &gray );

void CmymfcDlg::OnBnClickedSobel() //用cvSobel函数的边缘检测 { // TODO: 在此添加控件通知处理程序代码 IplImage *gray = 0, *edge = 0;

gray = cvCreateImage( cvSize(IMAGE_WIDTH, IMAGE_HEIGHT), IPL_DEPTH_8U, 1 ); edge = cvCreateImage( cvSize(IMAGE_WIDTH, IMAGE_HEIGHT), IPL_DEPTH_8U, 1 ); cvCvtColor( TheImage, gray, CV_BGR2GRAY ); cvSobel( gray, edge, 1, 0, 3 );

ShowImage( edge, IDC_ShowImg ); // 调用显示图片函数 cvReleaseImage( &gray ); cvReleaseImage( &edge ); }

void CmymfcDlg::OnBnClickedLaplace() //用cvLaplace函数实现图像的拉普拉斯变换 { // TODO: 在此添加控件通知处理程序代码 IplImage *gray = 0, *edge = 0;

gray = cvCreateImage( cvSize(IMAGE_WIDTH, IMAGE_HEIGHT), IPL_DEPTH_8U, 1 ); edge = cvCreateImage( cvSize(IMAGE_WIDTH, IMAGE_HEIGHT), IPL_DEPTH_8U, 1 ); cvCvtColor( TheImage, gray, CV_BGR2GRAY ); cvLaplace( gray, edge, 3 );

ShowImage( edge, IDC_ShowImg ); // 调用显示图片函数 cvReleaseImage( &gray ); cvReleaseImage( &edge );

搜索更多关于: 图像处理opencv代码 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

} void CmymfcDlg::OnBnClickedReadimg() //读取图片操作 { // TODO: 在此添加控件通知处理程序代码 // 这里用CFileDialog来选择图片 CFileDialog dlg( TRUE, _T(\ OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY, _T(\ ); // 打开文件对话框的标题名 dlg.m_ofn.lpstrTitle = _T(\ // 判断是否获得图片 if( dlg.DoModal() != IDOK ) return; // 获取图片路径 CString mPath = dlg.GetPathName(); rePath = m

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com