Halcon10 与 VC++交互,通过picture control显示图像

2024-05-31 05:18

本文主要是介绍Halcon10 与 VC++交互,通过picture control显示图像,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

vs2010运行通过。VC++做的。

这个程序大概时这样的,左边是一个picture control,点击识别,通过调用halcon读图片,显示在vc++的mfc的picture control控件上。


步骤:

1》》》》》》》》》》》》》》》》》》

添加halcon头文件


2》》》》》》》》》》》》》》》》》》

添加一些类库


3》》》》》》》》》》》》》》》》》

写一个picture control窗口,你再在OnInitDialog里调用来初始化呀。

[plain]  view plain copy print ?
  1. void CHalconOCRExampleDlg::InitHalconWindow(void)  
  2. {  
  3.     //定义显示的起点和长宽高   
  4.     HTuple HWindowRow,HWindowColumn,HWindowWidth,HWindowHeight;    
  5.     //定义窗口ID     
  6.     HTuple HWindowID;  
  7.   
  8.     //定义一个CRect类的对象,用于获取图像框的尺寸和位置     
  9.     CRect Rect;    
  10.     CStatic* pWnd = (CStatic*)GetDlgItem(IDC_PIC_HWINDOW);    
  11.   
  12.     CDC *pDC = pWnd->GetDC();    
  13.     pWnd->GetWindowRect(&Rect);    
  14.   
  15.     //设置显示窗口的起点和宽高     
  16.     HWindowRow = 0;    
  17.     HWindowColumn = 0;    
  18.     HWindowWidth = Rect.Width();    
  19.     HWindowHeight = Rect.Height();  
  20.     //设定固定的窗口大小,而不是根据控件大小设定     
  21.     //GetDlgItem(IDC_PIC_HWINDOW)->SetWindowPos(NULL,0,0,Rect.Width(),Rect.Height(),SWP_NOZORDER | SWP_NOMOVE);     
  22.     try    
  23.     {    
  24.         set_window_attr("border_width",0);    
  25.         HWindowID = (Hlong)pWnd->m_hWnd;    
  26.         open_window(HWindowRow,HWindowColumn,HWindowWidth,HWindowHeight,HWindowID,"visible","",&m_HWindowID);    
  27.         set_draw(m_HWindowID, "margin"/*,"margin"*/);//设置显示模式是margin(边缘)     
  28.     }    
  29.     catch (HException& except)    
  30.     {    
  31.         TRACE(except.message);    
  32.     }    
  33. }  

嗯,对了,你还要在类里声明几个变量,如下:

[plain]  view plain copy print ?
  1. HTuple m_HWindowID;//picture control经过处理之后标示符,以后显示图像时,直接显示在m_HWindowID即可。  
  2. HTuple m_FGHandle,m_ImageWidth, m_ImageHeight;//m_FGHandle是视频设备  
  3. Hobject m_LiveImage;//从图片或视频中抓取图像到这个变量里面  

4、这时,我们需要显示图片的时候就可以调用

[plain]  view plain copy print ?
  1. disp_obj(m_LiveImage, m_HWindowID);  

比如说像我的这个小程序:

[plain]  view plain copy print ?
  1. read_image(&m_LiveImage, "C:/Users/longx-app/Desktop/Images/lena.bmp");  
  2.   
  3. CRect Rect;    
  4. CStatic* pWnd = (CStatic*)GetDlgItem(IDC_PIC_HWINDOW);    
  5.   
  6. CDC *pDC = pWnd->GetDC();    
  7. pWnd->GetWindowRect(&Rect);   
  8.   
  9. get_image_pointer1(m_LiveImage, NULL, NULL, &m_ImageWidth, &m_ImageHeight);//得到图像的宽高和指针  
  10. set_part(m_HWindowID, 0, 0, m_ImageHeight - 1, m_ImageWidth -1);//使图像显示适应窗口大小  
  11.   
  12. disp_obj(m_LiveImage, m_HWindowID);  

ok!我是一个没耐心写东西的人,就当做笔记。代码下载:


http://download.csdn.net/detail/loveq369/5984609

这篇关于Halcon10 与 VC++交互,通过picture control显示图像的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1017436

相关文章

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

VC网络协议

// PCControlDlg.cpp : 实现文件//#include "stdafx.h"#include "PCControl.h"#include "PCControlDlg.h"#include "afxdialogex.h"#ifdef _DEBUG#define new DEBUG_NEW#endif// 用于应用程序“关于”菜单项的 CAboutDlg 对话框#ifde

uniapp设置微信小程序的交互反馈

链接:uni.showToast(OBJECT) | uni-app官网 (dcloud.net.cn) 设置操作成功的弹窗: title是我们弹窗提示的文字 showToast是我们在加载的时候进入就会弹出的提示。 2.设置失败的提示窗口和标签 icon:'error'是设置我们失败的logo 设置的文字上限是7个文字,如果需要设置的提示文字过长就需要设置icon并给

lvgl8.3.6 控件垂直布局 label控件在image控件的下方显示

在使用 LVGL 8.3.6 创建一个垂直布局,其中 label 控件位于 image 控件下方,你可以使用 lv_obj_set_flex_flow 来设置布局为垂直,并确保 label 控件在 image 控件后添加。这里是如何步骤性地实现它的一个基本示例: 创建父容器:首先创建一个容器对象,该对象将作为布局的基础。设置容器为垂直布局:使用 lv_obj_set_flex_flow 设置容器

C# dateTimePicker 显示年月日,时分秒

dateTimePicker默认只显示日期,如果需要显示年月日,时分秒,只需要以下两步: 1.dateTimePicker1.Format = DateTimePickerFormat.Time 2.dateTimePicker1.CustomFormat = yyyy-MM-dd HH:mm:ss Tips:  a. dateTimePicker1.ShowUpDown = t

Verybot之OpenCV应用一:安装与图像采集测试

在Verybot上安装OpenCV是很简单的,只需要执行:         sudo apt-get update         sudo apt-get install libopencv-dev         sudo apt-get install python-opencv         下面就对安装好的OpenCV进行一下测试,编写一个通过USB摄像头采

小程序button控件上下边框的显示和隐藏

问题 想使用button自带的loading图标功能,但又不需要button显示边框线 button控件有一条淡灰色的边框,在控件上了样式 border:none; 无法让button边框隐藏 代码如下: <button class="btn">.btn{border:none; /*一般使用这个就是可以去掉边框了*/} 解决方案 发现button控件有一个伪元素(::after