QT与Halcon联合编程调用相机实时采集【采用定时器Qtimer】

1.QT与Halcon联合编程环境配置,第一步先要配置好环境。

详情见我另一篇博客配置方法:

QT与Halcon联合编程环境配置【注意事项以及遇到的各种坑】_NCUTer的博客-CSDN博客_qt联合halcon

配置好之后程序构建运行一次,在程序根目录下生成如下文件:

2.QT ui界面构建

 

3.将生成导出的halcon c++代码打开备用,挑选用到的代码放到mainwindow.cpp中

 mainwindow.h 代码如下:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include<Halcon.h>
#include<HalconCpp.h>
#include<HDevThread.h>
#include 
  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
是的,可以通过VB.NET和Halcon联合编程来实现实时显示和采集。以下是一个简单的示例: 1. 首先,在VB.NET中创建一个Windows Forms应用程序。 2. 添加Halcon的引用。在“解决方案资源管理器”中右键单击“引用”,选择“添加引用”,然后选择“浏览”选项卡,找到Halcon所在的文件夹(通常在C:\Program Files\MVTec\HALCON-XX\bin\dotnet4)并选择“HalconDotNet.dll”文件。 3. 在VB.NET中添加Halcon的命名空间: ```vb Imports HalconDotNet ``` 4. 在窗体中添加一个PictureBox控件,用于显示图像。 5. 在窗体的Load事件中初始化Halcon引擎: ```vb HOperatorSet.OpenWindow(0, 0, PictureBox1.Width, PictureBox1.Height, _ PictureBox1.Handle, "visible", "", out winID) ``` 6. 在窗体中添加一个定时器控件,并设置其Interval属性为100(表示100毫秒)。 7. 在定时器的Tick事件中实现图像采集和显示: ```vb Dim img As HImage = Nothing ' 采集图像 HOperatorSet.GrabImageAsync(out img, cameraHandle, -1) ' 显示图像 HOperatorSet.DispObj(img, winID) img.Dispose() ``` 其中,cameraHandle是相机的句柄,可以使用Halcon的GrabData函数来打开相机并获取句柄。 注意,在显示图像之前,需要调用Halcon的OpenWindow函数打开一个窗口,并将其句柄传递给DispObj函数。如果没有打开窗口,将会出现“HALCON error: HALCON error #1443: OpenWindow: window not found”错误。 另外,由于Halcon的图像对象是托管对象,需要手动调用Dispose方法来释放内存。 8. 运行程序,即可实现实时显示和采集。 完整代码如下: ```vb Imports HalconDotNet Public Class Form1 Private winID As IntPtr Private cameraHandle As IntPtr Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load ' 初始化Halcon引擎 HOperatorSet.OpenWindow(0, 0, PictureBox1.Width, PictureBox1.Height, _ PictureBox1.Handle, "visible", "", out winID) ' 打开相机 HOperatorSet.OpenFramegrabber("GigEVision", 1, 1, 0, 0, 0, 0, _ "default", -1, "default", -1, "false", _ "default", "default", cameraHandle) ' 开始采集 HOperatorSet.GrabDataStart(cameraHandle, -1) ' 启动定时器 Timer1.Interval = 100 Timer1.Start() End Sub Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick Dim img As HImage = Nothing ' 采集图像 HOperatorSet.GrabImageAsync(out img, cameraHandle, -1) ' 显示图像 HOperatorSet.DispObj(img, winID) img.Dispose() End Sub Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing ' 停止采集 HOperatorSet.GrabDataStop(cameraHandle) ' 关闭相机 HOperatorSet.CloseFramegrabber(cameraHandle) ' 关闭窗口 HOperatorSet.CloseWindow(winID) End Sub End Class ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NCUTer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值