当前位置: 首页 > news >正文

2:QT联合HALCON编程—图像显示放大缩小

1.声明事件

#include <HalconCpp.h>
using namespace HalconCpp;#include <QCloseEvent>//滚轮事件

2.在.h文件中声明和定义公共全局变量,以及图像缩放的函数

            void wheelEvent(QWheelEvent *event);//定义函数HTuple wcRow0, wcRow1, wcCol0, wcCol1,m_objImage;bool GunLunFlag = false;HObject  ho_Image;

3.在.cpp文件中,构造函数中

   GunLunFlag = true; //变量变为1

4.在.cpp的函数中开始定义

              使用此函数时,需要替换窗口名和图像名。(如果在别处也需要使用这两个变量,所以才把这些变量声明到全局变量中去)

        HTuple hv_WindowHandle;  //公共窗口  大家都会去使用  全局作用域(在联合编程1节里面有提到)

       

//滚轮事件函数
void MainWindow::wheelEvent(QWheelEvent *event)
{if(ui->gvDepthMap->geometry().contains(this->mapFromGlobal(QCursor::pos()))){//resizeImage();SetWindowExtents(hv_hv_WindowHandle, 0, 0,  ui->gvDepthMap->width(), ui->gvDepthMap->height());try{if (GunLunFlag == true){QPoint pos = event->pos();HTuple Row0_1, Col0_1, Row1_1, Col1_1;HTuple ImagePtX, ImagePtY;QRect WndRect;double Scale = 0.1;HTuple Width, Height;GetImageSize(ho_Image, &Width, &Height);WndRect = QRect(QPoint(0, 0), QPoint(ui->gvDepthMap->width(), ui->gvDepthMap->height()));if (WndRect.contains(event->pos())){if (event->delta() > 0){ImagePtX = wcCol0 + (pos.x() - WndRect.left()) / (WndRect.width() - 1.0) * (wcCol1 - wcCol0);ImagePtY = wcRow0 + (pos.y() - WndRect.top()) / (WndRect.height() - 1.0) * (wcRow1 - wcRow0);Row0_1 = ImagePtY - 1 / (1 - Scale) * (ImagePtY - wcRow0);Row1_1 = ImagePtY - 1 / (1 - Scale) * (ImagePtY - wcRow1);Col0_1 = ImagePtX - 1 / (1 - Scale) * (ImagePtX - wcCol0);Col1_1 = ImagePtX - 1 / (1 - Scale) * (ImagePtX - wcCol1);wcRow0 = Row0_1;wcCol0 = Col0_1;wcRow1 = Row1_1;wcCol1 = Col1_1;if (wcRow0 < 0 || wcCol0 < 0){wcRow0 = 0;wcCol0 = 0;wcRow1 = Height;wcCol1 = Width;}ClearWindow(hv_hv_WindowHandle);SetPart(hv_hv_WindowHandle, wcRow0, wcCol0, wcRow1, wcCol1);DispObj(ho_Image, hv_hv_WindowHandle);}else{ImagePtX = wcCol0 + (pos.x() - WndRect.left()) / (WndRect.width() - 1.0) * (wcCol1 - wcCol0);ImagePtY = wcRow0 + (pos.y() - WndRect.top()) / (WndRect.height() - 1.0) * (wcRow1 - wcRow0);Row0_1 = ImagePtY - 1 / (1 + Scale) * (ImagePtY - wcRow0);Row1_1 = ImagePtY - 1 / (1 + Scale) * (ImagePtY - wcRow1);Col0_1 = ImagePtX - 1 / (1 + Scale) * (ImagePtX - wcCol0);Col1_1 = ImagePtX - 1 / (1 + Scale) * (ImagePtX - wcCol1);wcRow0 = Row0_1;wcCol0 = Col0_1;wcRow1 = Row1_1;wcCol1 = Col1_1;}ClearWindow(hv_hv_WindowHandle);SetPart(hv_hv_WindowHandle, wcRow0, wcCol0, wcRow1, wcCol1);DispObj(ho_Image, hv_hv_WindowHandle);}}}catch(...){// ui->(可以添加界面框显示内容)return;}}
}

已经看到这里了,不妨点个赞和关注吧!

      刚开始写文章,如有不足请多多包含;之后会持续更新关于(halcon学习,VS联合编程,QT联合编程,C++,C#,Opencv图像处理库,三维点云库pcl,相机以及机器人的二次开发)等系统化学习文章。


http://www.mrgr.cn/news/100346.html

相关文章:

  • classfinal 修改过源码,支持jdk17 + spring boot 3.2.8
  • 逻辑运算符
  • Leetcode刷题记录19——无重复字符的最长子串
  • 揭开人工智能的神秘面纱:从概念到人工神经网络
  • (四) 实战Trae 编译调试C++项目(以minidocx为例)
  • gem5-gpu教程05 内存建模
  • 《USB技术应用与开发》第四讲:实现USB鼠标
  • 树状数组底层逻辑探讨 / 模版代码-P3374-P3368
  • C++指针(三)
  • matplotlib画图工具使用(1) 画折线统计图python代码
  • 海思ISP调试记录
  • Java实现HTML转PDF(deepSeekAi->html->pdf)
  • ubantu中下载编译安装qt5.15.3
  • 使用java代码注册onloyoffice账号 || 注册onloyoffice账号
  • WPF之项目创建
  • Flutter 弹窗队列管理:支持优先级的线程安全通用弹窗队列系统
  • 前端面试之吊打面试官 HTML篇
  • k8s 1.26版部署
  • 网络攻防第一~四集
  • windows下查看idea运行的进程占的JVM情况工具