1、先上图

2、头文件

1 #ifndef MAINWINDOW_H2 #define MAINWINDOW_H

3

4 #include

5 #include

6 #include

7 #include

8 #include

9 #include

10

11 #include"halconcpp/HalconCpp.h"

12 using namespaceHalconCpp;13

14 QT_BEGIN_NAMESPACE15 namespace Ui { classMainWindow; }16 QT_END_NAMESPACE17

18 class MainWindow : publicQMainWindow19 {20 Q_OBJECT21

22 public:23 MainWindow(QWidget *parent =nullptr);24 ~MainWindow();25

26 //一些用到的halcon变量

27 HObject ho_Image,ho_Region,ho_ConnectedRegions;28 HObject ho_SelectedRegions;29 HTuple hv_Width,hv_Height,hv_WindowID;30 HTuple hv_ImageFiles, hv_Index;31

32 void processImage(); //图片处理

33

34

35 privateslots:36 void on_readBtn_clicked(); //读取和处理图片

37

38 void on_selectBtn_clicked(); //选择目录

39

40 void on_clearBtn_clicked(); //清出窗口

41

42 private:43 Ui::MainWindow *ui;44

45 QString path; //路径

46 QFileInfoList infolist; //文件路径列表

47 QFileInfo info; //存储文件路径

48 QTextCodec *code; //字符转码

49 };50 #endif //MAINWINDOW_H

头文件

3、构造函数

MainWindow::MainWindow(QWidget *parent)

: QMainWindow(parent)

, ui(new Ui::MainWindow)

{

ui->setupUi(this);

code = QTextCodec::codecForName("GB2312");  // 字符处理

}

4、选择文件

1 voidMainWindow::on_selectBtn_clicked()2 {3 //读取文件夹

4 path = QFileDialog::getExistingDirectory(this,"选择文件目录","");5 if(path.isEmpty() == false) //判断是否选择文件夹

6 {7 QDir dir(path);8 infolist = dir.entryInfoList(QDir::Files|QDir::Dirs|QDir::NoDotAndDotDot);9 }10 else

11 infolist.clear(); //清除列表

12 }

选择文件

5、获取并显示HALCON窗口

1 voidMainWindow::on_readBtn_clicked()2 {3 for(int i =0 ; i

4 {5 //将路径处理成HALCON能识别的代码

6 info =infolist.at(i);7 QString subDir =info.absoluteFilePath();8 std::string str = code->fromUnicode(subDir).data(); //中文路径也可读取

9

10 if(info.isFile())11 {12 ReadImage(&ho_Image, str.c_str());13 Hlong winID = ui->label->winId();14 GetImageSize(ho_Image,&hv_Width,&hv_Height);15 SetWindowAttr("background_color","black");16

17 if (HDevWindowStack::IsOpen()==false) //判断HALCON窗口是否打开

18 {19 OpenWindow(0,0,hv_Width/4,hv_Height/4,winID,"","",&hv_WindowID);20 double a =hv_Width;21 qDebug()<

25 if(HDevWindowStack::IsOpen())26 DispObj(ho_Image, HDevWindowStack::GetActive());27

28 processImage(); //处理图片

29 }30 }31 }

显示图片

6、处理图片

1 voidMainWindow::processImage()2 {3 Threshold(ho_Image, &ho_Region, 128, 255);4 Connection(ho_Region, &ho_ConnectedRegions);5 SelectShape(ho_ConnectedRegions, &ho_SelectedRegions, "area", "and", 5309.07, 9999999);6

7 if(HDevWindowStack::IsOpen())8 {9 SetColor(HDevWindowStack::GetActive(),"red");10 DispObj(ho_SelectedRegions, HDevWindowStack::GetActive());11 }12 }

处理图片

7、清理图片

1 voidMainWindow::on_clearBtn_clicked()2 {3 if(hv_WindowID != NULL) //判断句柄是否为NULL

4 {5 if(HDevWindowStack::IsOpen())6 CloseWindow(HDevWindowStack::Pop());7 }8 }

清理图片

只是一个简单的显示并处理图片,记住以下的坑

1)打开文件之后记得判断path是否为空

2)图片大小规格显示由OpenWindow决定,可以手写代码更改窗口大小来适应label或者QGraphicsview

3)每次读取图片,要判断HDevWindowStack::IsOpen()是否为true,即halcon句柄是否打开,关闭窗口后要重新打开halcon窗口句柄

4)halcon变量和QT变量会有转换,例如QString转成halcon的字符串,需要如下方法

QString str = "../image/1.bmp";

ReadImage(&ho_Image, str.toStdString.c_str());

原文:https://www.cnblogs.com/GEEK-ZHAO/p/12576555.html

在qt中获取halcon窗口图片_Qt联合HALCON显示文件夹图片及初步处理相关推荐

  1. Qt中为工程添加资源文件、给按钮添加图片

    Qt中为工程添加资源文件.给按钮添加图片 1.使用QIcon类.代码如下: QIcon icon;icon.addFile(tr("res/icon/wall.png"));ui- ...

  2. QT中如何固定窗口的大小?

    QT中如何固定窗口的大小? 一种方法是设置它的最大大小和最小大小,并且使它们的值相等,都等于当前你设置的窗口尺寸.简单的示例: setMinimumSize(370, 150);setMaximumS ...

  3. Qt 中获取摄像头图像数据的方法

    Qt 中获取摄像头图像数据的方法 在 Qt 中提供了 QCamera 类用来操作摄像头.(这里的摄像头指的是电脑上常用的那种 USB 摄像头或网络摄像头,暂时还不支持工业相机.)摄像头获取的实时图像可 ...

  4. QT中获取文件路径、文件名、后缀

    QString file_full, file_name, file_path,file_suffix ; QFileInfo fileinfo; file_full = QFileDialog::g ...

  5. Qt中如何使窗口隐藏/最小化到托盘

    Qt中如何实现自己的托盘功能,Qt自带的demo也很明了,这里我们就来实现自己的一个托盘... 功能:窗口最小化后或者点击"hide"按钮将窗口隐藏到托盘. 通常最小化的窗口会在任 ...

  6. windows卸载qt_如何在Qt中显示一个窗口并在关闭后立即将其删除?

    作为一个非常简单的例子,我想在按下按钮时在Qt中显示一个对话框.通常的模式(在我正在申请的应用程序中)似乎如下: class MainWindow { ... private slots: butto ...

  7. html中获取浏览器窗口宽度,JavaScript 获取浏览器窗口的大小

    简明现代魔法 -> JavaScript -> JavaScript 获取浏览器窗口的大小 JavaScript 获取浏览器窗口的大小 2010-04-16 程序演示: 获取浏览器当前窗口 ...

  8. QT中获取选中的radioButton的两种方法

    QT中要获取radioButton组中被选中的那个按钮,可以采用两种如下两种办法进行: 方法一:采用对象名称进行获取 代码: 1 QRadioButton* pbtn = qobject_cast&l ...

  9. QT 如何获取主窗口的指针

    有时候需要获取主窗口指针,从而通过指针来使用其方法,详见代码: QMainWindow* getMainWindow() {foreach(QWidget *w, qApp->topLevelW ...

最新文章

  1. 执行 pip3 install selenium 时出现 fail to create process
  2. PW Live 直播 | 清华大学博士生岂凡超:义原知识库的应用和扩充
  3. ELK:kibana使用的lucene查询语法
  4. SQL SERVER中一些常见性能问题的总结
  5. 解决IntelliJ IDEA报错Error:Cannot determine path to ‘tools.jar‘ library for 17 (C:\Program Files\Java\jd
  6. Angular jasmine单元测试框架spied method的调用记录数据结构
  7. .NET Core 3.0 linux 部署小贴士
  8. 骆驼能站在鸡蛋上吗!?
  9. xposed 修改参数_【Android 原创】2020春节红包第三题Xposed框架Hook的应用
  10. django-学生列表的删除操作
  11. 随想录(什么是软件架构师)
  12. C++实现经典四阶龙格库塔法解一阶微分方程
  13. 理解Aode Air,理解RIA开发
  14. 【逻辑】笔面试 | 智力题整理
  15. STM32F7--->FMC(可变存储控制器) Flexible Memory Controller
  16. java getdate和getday,jq里面,如何用getDate()和getDay()函数遍历出当月的所有日子和星期?...
  17. 猿人学之js混淆源码乱码
  18. 大学计算机实验图灵机模型与计算机硬件,实验1图灵机模型与计算机硬件系统虚拟拆装实验报告.pdf...
  19. 梅氏砝码(2014腾讯实习笔试附加题)
  20. 一文告诉你什么是开源表单系统

热门文章

  1. 常用sql语句整理:mysql
  2. 思路与好题记录与小技巧
  3. Spring同一个类中注解方法互相调用的问题
  4. jquery实现悬浮框
  5. linux下的磁盘配额简介暨 linux下加挂硬盘续
  6. 你想过35岁以后的出路吗
  7. 同步、异步的使用场景及好处
  8. python comprehension_Python从题目中学习:List comprehension
  9. 【毕业论文写作技巧】毕业设计(论文)写作框架
  10. 又涨啦!2021年6月程序员工资出炉