记录MFC联合halcon界面显示开发

server/2025/3/4 3:41:42/

要将 Halcon 的测试效果显示在 MFC 程序的界面中,你可以通过以下步骤实现。基本思路是在 MFC 窗口中创建一个合适的区域来显示 Halcon 处理后的图像和图形,通常可以使用 CStatic 控件作为显示区域,并通过 Halcon 的 C++ 接口(HalconCpp)将处理结果绘制到该区域上。

以下是一个简单的示例代码,展示了如何在 MFC 对话框程序中集成 Halcon 图像显示和处理:

  1. 创建 MFC 对话框工程:使用 Visual Studio 创建一个新的 MFC 对话框应用程序项目。

  2. 添加 Halcon 库引用

    • 在项目属性中,将 Halcon 的头文件目录和库文件目录添加到项目的包含目录和库目录中。
    • 链接 Halcon 的库文件(如 halconcpp.lib 等)。
  3. 在对话框资源中添加一个 CStatic 控件:用于显示 Halcon 的处理结果。假设该控件的 ID 为 IDC_DISPLAY_STATIC

  4. 编写代码

    // 在对话框类的头文件(.h)中添加以下内容
    #include <HalconCpp.h>
    using namespace HalconCpp;class CYourDialog : public CDialogEx
    {// 其他成员变量和函数...private:HObject ho_Image; // 用于存储 Halcon 图像HTuple hv_WindowHandle; // 用于存储显示窗口句柄public:CYourDialog(CWnd* pParent = nullptr);   // 标准构造函数// 用于初始化 Halcon 显示的函数void InitHalconDisplay();// 用于处理 Halcon 图像并显示结果的函数void ProcessAndDisplayImage();// 析构函数,释放资源~CYourDialog();// 其他成员函数...
    };

// 在对话框类的实现文件(.cpp)中添加以下内容// 初始化 Halcon 显示
void CYourDialog::InitHalconDisplay()
{// 获取显示控件的句柄CWnd* pWnd = GetDlgItem(IDC_DISPLAY_STATIC);if (pWnd == nullptr){return;}// 获取控件的矩形区域CRect rect;pWnd->GetClientRect(&rect);// 打开 Halcon 显示窗口并关联到控件OpenWindow(0, 0, rect.Width(), rect.Height(), (Hlong)pWnd->m_hWnd, "visible", "", &hv_WindowHandle);
}// 处理 Halcon 图像并显示结果
void CYourDialog::ProcessAndDisplayImage()
{try{// 读取图像ReadImage(&ho_Image, "your_image_path.jpg");// 设置绘图颜色为红色SetColor(hv_WindowHandle, "red");SetLineWidth(hv_WindowHandle, 3);// 检测圆(这里使用简单示例,你可以替换为实际的处理逻辑)HObject ho_CircleContours;FindCircles(ho_Image, &ho_CircleContours, "tukey", 5, 3, 10, 20, 0.8, 100, 500);// 显示所有检测到的圆,标记为红色DispObj(ho_CircleContours, hv_WindowHandle);// 可以继续添加其他处理和显示逻辑,如坐标筛选和再次标记等}catch (HalconCpp::HException& ex){AfxMessageBox(ex.ErrorMessage());}
}// 对话框的初始化函数,调用初始化和处理显示函数
BOOL CYourDialog::OnInitDialog()
{CDialogEx::OnInitDialog();// 初始化 Halcon 显示InitHalconDisplay();// 处理并显示图像ProcessAndDisplayImage();return TRUE;  // return TRUE unless you set the focus to a control
}// 析构函数,释放资源
CYourDialog::~CYourDialog()
{// 关闭 Halcon 显示窗口if (IsWindow(hv_WindowHandle)){CloseWindow(hv_WindowHandle);}
}

代码说明:

  1. 头文件部分:在对话框类的头文件中包含 HalconCpp.h 头文件,并定义了用于存储 Halcon 图像和显示窗口句柄的成员变量,以及初始化显示、处理并显示图像的成员函数声明。
  2. InitHalconDisplay 函数:获取 MFC 对话框中用于显示的 CStatic 控件的句柄和矩形区域,然后使用 OpenWindow 函数在该控件区域内打开一个 Halcon 显示窗口。
  3. ProcessAndDisplayImage 函数:实现了读取图像、设置绘图颜色、检测圆并显示圆轮廓的功能。你可以根据实际需求替换为更复杂的 Halcon 处理逻辑。
  4. OnInitDialog 函数:在对话框初始化时,调用 InitHalconDisplay 和 ProcessAndDisplayImage 函数,完成显示窗口的初始化和图像的处理与显示。
  5. 析构函数:在对话框销毁时,关闭 Halcon 显示窗口,释放相关资源。

 

 


http://www.ppmy.cn/server/171805.html

相关文章

ESP32-S3 42引脚 语音控制模块、设备运转展示 GOOUUU TECH 果云科技S3-N16R8 控制舵机 LED开关 直流电机

最近还是想玩了下esp32&#xff0c;基于原来的开发板&#xff0c;看见佬做了一个语音识别的项目&#xff0c;通过这个语音识别可以控制LED开关和直流电机这些&#xff0c;详情可见视频&#xff08;推荐&#xff09;具体硬件就在下方。 信泰微】ESP32-S3 42引脚 语音控制模块、…

从零搭建微服务项目Pro(第1-2章——Quartz实现定时任务模块优化)

前言&#xff1a; 在企业项目中&#xff0c;往往有定时任务发布的需求&#xff0c;比如每天晚9点将今日数据备份一次&#xff0c;或每月一号将上月的销售数据邮件发送给对应的工作人员。显然这些操作不可能是人工到时间点调用一次接口&#xff0c;需要编写专门的模块完成任务的…

数据集笔记:新加坡LTA MRT 车站出口、路灯 等位置数据集

1 MRT 车站出口 data.gov.sg &#xff08;geojson格式&#xff09; 1.1 kml格式 data.gov.sg 2 路灯 data.govsg ——geojson data.gov.sg——kml 版本 3 道路摄像头数据集 data.gov.sg 4 自行车道网络 data.gov.sg 5 学校区域 data.gov.sg 6 自行车停车架&#xff…

【Oracle专栏】Oracle 之 回收站

Oracle相关文档&#xff0c;希望互相学习&#xff0c;共同进步 风123456789&#xff5e;-CSDN博客 1.概述 回收站的全称叫&#xff1a;Tablespace Recycle Bin。 Oracle回收站是一个逻辑区域&#xff0c;Oracle并没有为它分配物理空间。当表被drop后&#xff0c;如果回收站中空…

WP 高级摘要插件:助力 WordPress 文章摘要精准自定义显示

wordpress插件介绍 “WP高级摘要插件”功能丰富&#xff0c;它允许用户在WordPress后台自定义文章摘要。 可设置摘要长度&#xff0c;灵活调整展示字数&#xff1b;设定摘要最后的显示字符&#xff0c; 如常用的省略号等以提示内容未完整展示&#xff1b;指定允许在摘要中显示…

python把html网页转换成pdf标题没有乱码,正文都乱码

在使用Python将HTML网页转换成PDF时&#xff0c;遇到标题没有乱码但正文乱码的问题&#xff0c;通常是由于字符编码处理不当或字体支持问题导致的。以下是一些可能的原因和解决方案&#xff1a; 原因分析 字符编码不匹配&#xff1a; HTML文件的编码与PDF转换工具或库所使用的…

高防IP能够给网站带来哪些好处?

随着网络攻击的复杂性和频繁攻击&#xff0c;企业需要保障自身网站和数据信息的安全性&#xff0c;确保业务可以持续稳定的运行&#xff0c;高防IP作为一种网络安全服务&#xff0c;可以帮助企业抵御一定的网络攻击&#xff0c;那么高防IP能够给网站带来哪些好处呢&#xff1f;…

解决“request returned Internal Server Error for API route and version xxx”错误

一、问题描述 ragflow/README_zh.md at main infiniflow/ragflowhttps://github.com/infiniflow/ragflow/blob/main/README_zh.md 当我们使用Docker部署ragflow,确认服务器状态时,提示“request returned Internal Server Error for API route and version http://%2F%2F.%…