在qt中获取halcon窗口图片_Qt联合HALCON显示文件夹图片及初步处理
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显示文件夹图片及初步处理相关推荐
- Qt中为工程添加资源文件、给按钮添加图片
Qt中为工程添加资源文件.给按钮添加图片 1.使用QIcon类.代码如下: QIcon icon;icon.addFile(tr("res/icon/wall.png"));ui- ...
- QT中如何固定窗口的大小?
QT中如何固定窗口的大小? 一种方法是设置它的最大大小和最小大小,并且使它们的值相等,都等于当前你设置的窗口尺寸.简单的示例: setMinimumSize(370, 150);setMaximumS ...
- Qt 中获取摄像头图像数据的方法
Qt 中获取摄像头图像数据的方法 在 Qt 中提供了 QCamera 类用来操作摄像头.(这里的摄像头指的是电脑上常用的那种 USB 摄像头或网络摄像头,暂时还不支持工业相机.)摄像头获取的实时图像可 ...
- QT中获取文件路径、文件名、后缀
QString file_full, file_name, file_path,file_suffix ; QFileInfo fileinfo; file_full = QFileDialog::g ...
- Qt中如何使窗口隐藏/最小化到托盘
Qt中如何实现自己的托盘功能,Qt自带的demo也很明了,这里我们就来实现自己的一个托盘... 功能:窗口最小化后或者点击"hide"按钮将窗口隐藏到托盘. 通常最小化的窗口会在任 ...
- windows卸载qt_如何在Qt中显示一个窗口并在关闭后立即将其删除?
作为一个非常简单的例子,我想在按下按钮时在Qt中显示一个对话框.通常的模式(在我正在申请的应用程序中)似乎如下: class MainWindow { ... private slots: butto ...
- html中获取浏览器窗口宽度,JavaScript 获取浏览器窗口的大小
简明现代魔法 -> JavaScript -> JavaScript 获取浏览器窗口的大小 JavaScript 获取浏览器窗口的大小 2010-04-16 程序演示: 获取浏览器当前窗口 ...
- QT中获取选中的radioButton的两种方法
QT中要获取radioButton组中被选中的那个按钮,可以采用两种如下两种办法进行: 方法一:采用对象名称进行获取 代码: 1 QRadioButton* pbtn = qobject_cast&l ...
- QT 如何获取主窗口的指针
有时候需要获取主窗口指针,从而通过指针来使用其方法,详见代码: QMainWindow* getMainWindow() {foreach(QWidget *w, qApp->topLevelW ...
最新文章
- 执行 pip3 install selenium 时出现 fail to create process
- PW Live 直播 | 清华大学博士生岂凡超:义原知识库的应用和扩充
- ELK:kibana使用的lucene查询语法
- SQL SERVER中一些常见性能问题的总结
- 解决IntelliJ IDEA报错Error:Cannot determine path to ‘tools.jar‘ library for 17 (C:\Program Files\Java\jd
- Angular jasmine单元测试框架spied method的调用记录数据结构
- .NET Core 3.0 linux 部署小贴士
- 骆驼能站在鸡蛋上吗!?
- xposed 修改参数_【Android 原创】2020春节红包第三题Xposed框架Hook的应用
- django-学生列表的删除操作
- 随想录(什么是软件架构师)
- C++实现经典四阶龙格库塔法解一阶微分方程
- 理解Aode Air,理解RIA开发
- 【逻辑】笔面试 | 智力题整理
- STM32F7--->FMC(可变存储控制器) Flexible Memory Controller
- java getdate和getday,jq里面,如何用getDate()和getDay()函数遍历出当月的所有日子和星期?...
- 猿人学之js混淆源码乱码
- 大学计算机实验图灵机模型与计算机硬件,实验1图灵机模型与计算机硬件系统虚拟拆装实验报告.pdf...
- 梅氏砝码(2014腾讯实习笔试附加题)
- 一文告诉你什么是开源表单系统