OpenCV 打开图像

/*********************************************************************** * OpenCV 2.3.1 example * By Quarryman 2012 ***********************************************************************/

#include "stdafx.h"

#include <string>

#include <opencv2\opencv.hpp>

 using namespace cv;

using namespace std;

 int main()

{

string imagename = "lena.jpg"; 

  //读入图像

Mat img = imread(imagename); 

  //如果读入图像失败

if(img.empty()){ return -1;} 

  //创建窗口

namedWindow("image",1); 

//显示图像

imshow("image", img); 

//等待按键,按键盘任意键返回

waitKey(); 

  return 0;

}




\反斜杠在ANSI C中是有特殊含义的元字符,在程序中无法直接表示,如果要取其本义,请做转义处理,即:
img=cvloadimage("E:\\aa.bmp",4);




### 使用 MFC 和 OpenCV 实现图像打开与显示 为了实现使用 MFC 和 OpenCV 打开并显示图像的功能,可以按照以下方法编写代码。以下是完整的解决方案: #### 1. 创建 MFC 对话框应用程序 在 Visual Studio 中创建一个新的 MFC 应用程序项目,并选择对话框作为基础界面。 #### 2. 添加 Picture Control 控件 在对话框资源中添加一个 `Picture Control` 控件用于显示图像。将其属性设置为 `Frame` 或其他适合的样式以便更好地展示图像。 #### 3. 加载和显示图像的核心逻辑 利用 OpenCV 的 `cv::imread()` 函数加载图像文件,并通过 GDI 将其绘制到 `Picture Control` 上[^1]。 下面是具体的代码示例: ```cpp #include "opencv2/opencv.hpp" using namespace cv; void CMFCDemoDlg::OnBnClickedOpenImage() { // 打开文件对话框以选择图像文件 CFileDialog fileDialog(TRUE, NULL, NULL, OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST, _T("Images (*.bmp;*.jpg;*.png)|*.bmp;*.jpg;*.png|All Files (*.*)|*.*||")); if (fileDialog.DoModal() != IDOK) return; CString strFilePath = fileDialog.GetPathName(); const char* filePath = CT2A(strFilePath); // 使用 OpenCV 读取图像 Mat image = imread(filePath); if (image.empty()) { AfxMessageBox(_T("无法加载图像!")); return; } // 显示图像到 Picture Control CDC* pDC = GetDlgItem(IDC_STATIC_IMAGE)->GetDC(); // 获取静态控件的设备上下文 int width = image.cols; int height = image.rows; // 创建兼容位图并将图像数据复制过去 BITMAPINFO bmi = { 0 }; bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); bmi.bmiHeader.biWidth = width; bmi.bmiHeader.biHeight = -height; // 负值表示顶部朝上 bmi.bmiHeader.biPlanes = 1; bmi.bmiHeader.biBitCount = 24; bmi.bmiHeader.biCompression = BI_RGB; SetDIBitsToDevice(pDC->m_hDC, 0, 0, width, height, 0, 0, 0, height, image.data, &bmi, DIB_RGB_COLORS); ReleaseDC(GetDlgItem(IDC_STATIC_IMAGE), pDC); // 释放设备上下文 } ``` 上述代码实现了以下几个功能: - **文件选择**:通过标准 Windows 文件对话框让用户选择图像文件。 - **图像加载**:调用 OpenCV 的 `imread()` 方法加载选定的图像文件[^2]。 - **GDI 绘制**:将 OpenCV 图像数据转换为 Windows 设备无关位图(DIB),并通过 `SetDIBitsToDevice` 方法绘制到指定的 `Picture Control` 上[^3]。 #### 4. 关键注意事项 - 确保已正确配置项目的 OpenCV 库路径以及头文件路径。 - 如果需要支持更多图像格式或高级处理功能,可扩展此代码中的逻辑。 - 在实际应用中可能还需要考虑异常情况下的错误提示机制。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值