Qt实现Halcon窗口显示当前图片坐标

一、前言

        Halcon加载图片的窗口,不仅能放大和缩小图片,还可以按住Ctrl键显示鼠标下的灰度值,这种方式很方便我们分析缺陷的灰度和对比度。

二、实现方式

 ① 创建显示坐标和灰度的widget窗口

        下图的是widget部件,使用了4个label控件,2个用于显示图标,另外两个分别显示坐标值和灰度值

② 鼠标在GraphicsView上移动时,判断Ctrl按键是否被按下。如果按下则在当前鼠标位置的附近显示widget部件,使用move移动到坐标位置

三、效果展示:

四、注意事项及解决方式

① 子部件Widget被遮挡问题

        解决方式:当鼠标移动到右下角时,子部件会被父窗体遮挡,可以将其设置为Qt::Window,显示在最上方。当这样做时,注意move的坐标是屏幕坐标,所以别忘记转换:maptoGlogal

setWindowFlags(Qt::FramelessWindowHint | Qt::Window);

② 鼠标碰触到子部件,导致父控件无法接受到鼠标事件,从而不正常显示

        解决方式:重写子部件的事件,将鼠标移动和键盘的事件传递给父控件

void ui_grayShow::mouseMoveEvent(QMouseEvent* event)
{
    QWidget::mouseMoveEvent(event);
    if (parentWidget())
    {
        QCoreApplication::sendEvent(parentWidget(), event);
    }
}
void ui_grayShow::keyReleaseEvent(QKeyEvent* event)
{
    QWidget::keyReleaseEvent(event);
    if (parentWidget())
    {
        QCoreApplication::sendEvent(parentWidget(), event);
    }
}

QtHalcon集成的项目中,如果你想创建一个窗口并在其中添加Halcon的对象(例如图像处理模块),可以按照以下步骤操作: 1. **设置环境**:首先,你需要安装QtHalcon库。确保它们已经成功集成,并在项目环境中配置好。 2. **创建Qt界面**:在Qt Designer中设计一个新的窗口(QWidget、QMainWindow等)。可以在窗口上添加各种控件如QPushButton,用于用户交互。 3. **连接信号和槽**:将QPushButton的click事件关联到一个槽函数。在Qt中,这通常通过在属性编辑器中设置"clicked()"信号连接到你的自定义槽函数。 4. **Halcon操作**:在槽函数里,你可以创建Halcon对象,比如Image对象,读取图片数据。然后利用Halcon提供的API进行图像处理,比如特征检测、识别等。 示例代码片段(Python绑定版PyQt5和Halcon): ```python from PyQt5.QtWidgets import QApplication, QPushButton import halcon as hl class MyWindow(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): # 创建按钮 button = QPushButton('加载并处理图像', self) button.move(50, 50) # 连接信号槽 button.clicked.connect(self.load_and_process_image) def load_and_process_image(self): img = hl.Image('path_to_your_image') # 使用Halcon进行处理... result = hl.find_object(img, 'your_template') # 示例:查找物体 # 显示结果或进一步操作... if __name__ == '__main__': app = QApplication([]) window = MyWindow() window.show() app.exec_() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值