自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(83)
  • 收藏
  • 关注

原创 Halcon Image图像

Halcon中的图像数据可以用矩阵来表示,矩阵的行对应图像的高,矩阵的列对应图像的宽,矩阵的元素对应图像的像素,矩阵元素的值对应图像像素的灰度值。Image图像的分类:二值图像灰度图像RGB图像Image图像的通道:Image图像的通道可以当成一个二维数组。图像的通道可以分为:单通道图像图像内的像素点的值可以用一个灰度级数值进行描述;三通道图像图像内的像素点可以用三原色来进行描述;一幅完整的图像有R、G、B三个通道同时存在。图像中不存在蓝色只能说明蓝色通道上各个像素点

2021-12-01 17:20:19 2941

原创 qml启动界面开发

单独定义SplashScreen.qml文件import QtQuick 2.12import QtQuick.Window 2.12import QtQuick.Layouts 1.12import QtQuick.Controls 2.14Window { id:splashScreenRoot width: 750 height: 450 objectName: "mainView" visible: true flags: Qt.Windo

2021-12-01 16:18:25 959 1

原创 Qml列表属性

QML对象的列表属性类似于list:import QtQuick 2.12import QtQuick.Window 2.12import QtQuick.Controls 2.5Window { visible: true width: 640 height: 480 title: qsTr("Hello World") Item{ children: [ Text { id: nam

2021-12-01 15:04:08 988

原创 Qml 对象

import QtQuick 2.12Rectangle { visible: true width: 640 height: 480 Image{ anchors.centerIn: parent source: "iamges/IMG001.jpg" }}上面是一个简单的QML语言:import 引入QtQuick 2.12Rectangle{}和Image{}分别定义了两个对象(类),对象需要用一对花括号来进行描述

2021-12-01 14:36:01 193

原创 qmlscene

qmlscene是随着Qt5发布的一个工具,用来加载QML文档,使得可以在应用开发中随时查看QML代码得效果。是用来测试QML效果的,不能用于生产环境qmlscene的使用步骤为。打开发Qt下的控制台窗口:定位到要运行的.qm文件目录下,输入指令:qmlscene position.qml点击回车键。position.qml要替换成自己实际要运行的程序文件名。运行结果显示为当前程序文件的代码效果:...

2021-12-01 14:21:10 454

原创 Qt QString

QString操作方法:函数名称作用append()在字符串的后面添加字符串prepend()在字符串的前面添加字符串toUpper()将字符串全部转为大写形式toLower()将字符串全部转为小写形式trimmed()去掉字符串首尾的空格simplified()去掉字符串首尾的空格,中间连续的空格用一个空格代替contains()判断字符串是否包含某个字符section()从字符串中提取以sep作为分隔符,从start端到en

2021-11-30 17:40:32 170

原创 C# Monitor类锁定资源

在C#中可以使用Monitor类来锁定资源避免死锁。using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;using System.Threading.Tasks;namespace ConsoleApp2{ class Program { static void Main(string[] args)

2021-11-30 15:35:08 304

原创 Qt的基本模块

Qt的基本模块是Qt在所有平台上的基本功能,它们在所有的开发平台和目标平台上都可以使用。例如Qt Core模块是Qt类库的核心,所有其他模块都依赖于此模块,如果使用qmake构建项目,则Qt Core模块是自动被加入到项目中的。Qt GUI模块提供了用于开发GUI应用程序的必要的类,使用qmake构建应用程序时,Qt GUI 模块是自动被加入到项目中的,如果项目中不使用GUI功能,则需要在项目配置文件中加入:QT -=gui其他的模块一般不会被自动加入到项目中去,如果需要在项目中使用某个模块,则可

2021-11-30 15:16:25 823

原创 Qt 容器遍历foreach关键字

foreach关键字可以用来遍历容器中所有的项。foreach关键字遍历一个容器变量是创建了容器的一个副本,不能修改原来容器变量的数据项。

2021-11-30 15:01:50 532

原创 Qt STL类型迭代器

Qt中的STL的每一个容器类,都有两个STL类型迭代器,一个用于只读访问,一个用于读写访问:容器类只读迭代器读写迭代器QList,QQueueQList::const_iteratorQList::iteratorQLinkedListQLinkedList::const_iteratorQLinkedList::iteratorQVector,QStackQVector::const_iteratorQVector::iteratorQSetQSet

2021-11-30 14:53:38 577

原创 Qt java类型容器类的迭代

Qt中的两种迭代器类:Java类型迭代器Java类型的迭代器分为只读操作迭代器和读写操作迭代器;迭代器的指针不是指向一个数据项,而是在数据项之间。例:#include <QCoreApplication>#include <QDebug>int main(int argc, char *argv[]){ QCoreApplication a(argc, argv); QList<QString> list; list.appe

2021-11-30 10:01:15 768

原创 Qt容器类

容器类Qt的容器类比标准模板库中的容器类更轻巧安全和易于使用。并且是线程安全的,Qt的容器类的格式为:QList ,T 是一个具体的类型,可以是int、float等简单类型,也可以是Qstring、QDate等类型,但不能是QObject或任何其子类。T必须是一个可以赋值的类型。Qt的容器类分为:顺序容器关联容器顺序容器类:QList最常用的容器类,以数组列表的方式实现,在其前和其后添加数据非常快,QList以下标索引的方式对数据进行访问。QList用于添加、插入、替换、移动、删除、数据项

2021-11-29 15:23:16 1653

原创 向线程传递参数

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;using System.Threading.Tasks;namespace 线程{ class Program { static void Main(string[] args) { var sample = n

2021-11-26 16:48:30 98

原创 前台线程和后台线程

当主程序启动时定义了两个不同的线程,默认情况下显示创建的线程是前台线程,通过手动设置线程的对象IsBackground的属性为True来创建一个后天线程,通过配置来实现第一个线程会比第二个线程先完成,然后终止程序。前台线程与后台线程的主要区别就是:进程会等待所有的前台线程完成后再结束工作,但是如果只剩下后台线程,则会直接结束工作。如果程序定义了一个不会完成的前台线程,主程序不会正常结束。using System;using System.Collections.Generic;using System

2021-11-23 10:10:52 904

原创 Qml 对象的属性

Qml对象的属性:id:id标识propert attributes:属性,包括继承自Item的attributes,自定义的attribute.signal attributes:信号signal handler attributes:信号处理method attributes:函数attached propetiex and attached signal handler attributes:附带的属性和附带的singal handler...

2021-11-17 14:22:04 150

原创 Qt 线程

QThread 是QObject的子类,所以可以使用槽机制,Qt线程定义了started()和finished()两个信号,started()信号在线程开始执行前发射,也就是在run()函数调用之前,finished()信号在线程就要结束时发射。

2021-11-17 14:04:46 182

原创 Qt为何要加宏定义

Qt是对标准C++进行了扩展,引入了一些新的概念和功能,例如信号和槽、对象属性等。Qt的元对象编译器是一个预处理器,在源程序被编译前先将这些Qt特性的程序转换为标准C++兼容的形式,然后再由标准C++编译器进行编译。这就是为什么在使用信号与槽机制的类中必须添加一个Q_OBJECT宏的原因,只有添加了这个宏,moc才能对类里的信号与槽的代码进行预处理。Qt core模块是Qt类库的核心,所有其他模块都依赖于此模块,如果使用qmake来构建项目,Qt core则是自动加入的。Qt为C++语言增加的特性就是在

2021-11-15 15:17:50 650

原创 Qt信号与槽

信号与槽是Qt编程的基础,信号与槽在Qt中处理界面各个组件的交互操作时变得更加的直观和简单。信号信号(Signal)就是在特定情况下被发射的事件。GUI程序设计的主要内容就是对界面上各个组件的信号进行响应,只需要知道什么情况下发射哪些信号,合理地去响应和处理这些信号就可以了。槽槽(Slot)就是响应信号的函数。槽就是一个函数,与一般的C++函数一样,可以定义在类的任何部分(public\private\protected),槽函数可以具有任何参数,也可以被直接调用。槽函数与一般的函数不同的地方在于,

2021-11-15 11:28:37 1025

原创 C# 线程

概念:线程可以认为是一个虚拟进程,用于独立运行一个特定的程序。线程用来调整不同程序访问CPU的优先级。正在执行中的程序实例可被称为一个进程,进程由一个或者多个线程组成,这意味着当程序运行时,始终有一个执行程序代码的主线程。用Thread创建线程:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;using System.Thread

2021-11-12 17:37:13 150

原创 Qt主函数文件

main.cpp是实现main()函数的文件#include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[]){ QApplication a(argc, argv);//定义并创建应用程序 MainWindow w;//定义并创建窗口 w.show();//显示窗口 return a.exec();//应用程序运行}main()函数是应用程序的入口,主要的

2021-11-12 16:05:40 521

原创 Qt的界面基类

Qt在创建界面工程的时候有三种界面基类可选:**QMainWindow:**主窗口类,具有主菜单栏、工具栏和状态栏,类似于一般的应用程序的主窗口;**QWidget:**所有具有可视化界面类的基类,创建的界面对各种界面组件都可以支持;**QDialog:**对话框类,可建立一个基于对话框的界面;...

2021-11-12 14:30:40 401

原创 HALCON图像的转换

RGB图像转换为灰度图:算子:rgb1_to_gray(RGBImage:GrayImage:????RGBImage:输入图像;GrayImage:输出图像;如果输入图像是三通道图像可以更具公式:灰度值=0.299红色值+0.587绿色值+0.114*蓝色值;如果RGBImage中输入图像是单通道图像,GrayImage灰度图直接复制RGBImage进行输出。*读取图像read_image (Earth, 'earth.png')*RGB图像转换为灰度图rgb1_to_gray (Ea

2021-11-12 12:58:58 3872

原创 HALCON图像显示

新增一个窗体:dev_open_window(::Row,Column,Width,Height,Background,WindowHandle)dev_open_window (0, 0, 512, 512, 'black', WindowHandle)Row、Column:窗口的起始坐标(默认值:0,0);Width、Height:窗口的宽度和高度(默认值512、512);Background:窗口的北京颜色;WindowHandle:窗口句柄将窗口的尺寸设置为(-1,-1)表示窗口大小

2021-11-12 11:15:09 2058

原创 Halcon相机的同步采集和异步采集

异步采集:算子:grab_image_async(:Image:AcqHandle,MaxDelay)grab_image_start(::AcqHandle,MaxDelay)相机进行异步采集,一幅图像采集完成后相机马上采集下一幅图像。MaxDelay表示异步采集时可以允许的最大延时,本次采集命令距离上次采集命令的时间不能超出MaxDelay,超出则需要重新采集。同步采集:grab_image(:Image:AcqHandle:)进行相机同步采集,采集完成后处理图像。图像处理结束以后再次采集

2021-11-12 10:38:18 4528

原创 Halcon图像读取的方式

Halcon图像读取的三种方式利用read_image算子读取图像read_image(:Image:FileName:)Image:读取图像的变量名称;FileName:图像文件所在的路径;利用该算子读取图像有3种方式:1:利用CTRL+R快捷键打开读取图像对话框,选择文件名称所在路径及变量名称,选择语句插入位置,点击确定:2:使用算子窗口调用read_image算子,选择文件名称所在的路径及变量名称,算子窗口如图所示:3:利用for循环读取同一路径下的多张图片。首先声明一个Tupl

2021-11-11 17:52:57 4761

原创 Halcon 算子

1:算子的基本结构Halcon算子基本结构的形式为:算子名称(图像输入:图像输出:控制输入:控制输出:)算子结构中的四种参数被三个冒号分割开,一个算子中可能这四种参数不会都存在,但是参数的次序不会变化,算子中输入参数不会被修改,只会被算子使用,算子只能修改输出的参数。例:threshold(Image:Region:MinGray,MaxGray:)*Image为图像输入参数;*Region为图像输出参数;*MinGray和MaxGray为控制输入参数。这个算子在被调用时需要输入一个图像

2021-11-11 17:17:57 1717

原创 Halcon图像处理基础

Halcon控制语句基础条件语句:1:if条件语句形式1:if(表达式) 语句组endif形式2:if(表达式) 语句组else 语句组endif2:switch多分支条件语句格式:switch(条件)case 常量表达式1: 语句1break...case 常量表达式n: 语句nbreakdefault: 语句n+1endswitch3:循环控制语句1:while循环语句格式:while(条件) 循环语句体endwhile2:fo

2021-11-11 15:55:21 1523

原创 数字图像的文件格式及参数

数字图像的常见存储格式:- BMPBMP是Windows位图,可以使用任何颜色深度存储单个光栅图像,它不支持文件压缩,也不适合web页。这会造成文件非常大。- JPEGJPEG图片以24位颜色存储单个光栅图像,是与平台无关的格式,并且支持最高级别的压缩,不过这种压缩是有损耗的,图片的大小是以牺牲图片质量为代价的。- GIF支持256色调色板,详细的图片和写实摄影图像会丢失颜色信息。- PNGPNG图片格式可以使用任何颜色深度存储单个光栅图像,是与平台无关的格式,支持高级别无损耗压缩,支持伽马

2021-11-11 15:10:31 1627

原创 数字图像直方图

一幅数字图像,若对应于每一个灰度值,统计出具有该灰度值的像素数,并据此绘制出像素数灰度值图形,该图形被称为这个图像的灰度直方图。灰度直方图是一幅图像中各个像素灰度值出现频数的统计结果,只反映该图像中不同灰度值出现的频数,而不反应某一灰度的像素所在的位置。因此说灰度直方图,只包含了该图像中某一个灰度值的像素出现的概率,丢失了其所在位置的信息。由于直方图是对具有相同灰度值的像素统计计数得到的,因此,一幅图像各个子区域的直方图之和就是该图像全图的直方图。直方图的应用:一幅图像的背景与物体在直方图上会呈现双

2021-11-11 11:34:04 1887

原创 数字图像的数值描述

数字图像的分类数字图像通常可以分为3类:二值图像灰度图像彩色图像二值图像:二值图像指的是图像上的每个像素点不是黑色就是白色,其灰度值没有中间过渡的图像。二值图像对图像所表现出来的信息描述的比较粗略,具有数据量小的有点,适合于文字信息的描述。灰度图像:灰度图像指每个像素信息由一个量化后的灰度级来描述的数字图像,灰度图像中不包含彩色信息。灰度图像中的每个像素的灰度值可以用一个字节表示,灰度级数为256级,每个像素可以是0-255之间的任何一个值,图像从黑色到白色过度时每种灰色代表一种灰度级。

2021-11-11 11:01:28 1189

原创 图像的数字化处理

图像表现分类图像按照表现方式的不同,可以分为两类:连续图像离散图像自然界中的图像都是模拟量,用计算机对图像进行分析处理,需要将图像转换为计算机能够接受的显示和存储的格式。这就是图像的数字化处理。图像的数字化处理包括:采样量化编码采样一幅图像需要经过离散化成为数字图像后才能被计算机处理,图像的空间坐标的离散化叫做空间采样,灰度的离散化叫做灰度量化。采样分为均匀采样和量化,非均匀采样和量化。量化采样后的图像虽然在空间分布上是离散的,但各个像素的取值还是连续的,还需

2021-11-11 10:50:25 2664

原创 Halcon简述

HALCON是目前工业自动化领域广泛使用的软件,可以快速有效的解决图像处理问题。HALCON包含的主要功能和应用有:BLOB分析,包括标准的阈值分割,动态分割以及其他附加的图像分割算子,HALCON可以快速的实现BLOB分析;形态学,包括腐蚀、膨胀、开闭运算;图像转换为Region\XLD特性。图像运算,包含图像的代数运算、逻辑运算和几何运算;利用傅里叶变换实现图像的空间域和频域之间的变换;标定,HALCON包含本身的标定板,通过几个内外摄像头参数实现快速标定;匹配,匹配功能包括基于相关性匹

2021-11-10 17:08:52 3017

原创 数字图像处理

图像我们从客观视界中获取的图像通常是二维的,所以一幅静态的图像可以用一个二维数组来描述。二维数组中的一个元素表示一个二维空间中的一个坐标点,表示该点形成的影响的某种性质。图像的分类1:按照图片的存在形式分类[1]. 可见图像,例如:照片,透镜光栅等成像的光图像;[2]. 不可见图像,例如:红外、微波成像的不可见光成像和温度压力等按数学模型生成的图像;2:按照图像的亮度等级分类[1]. 二值图像:只有黑白两种亮度等级的图像;[2]. 灰度图像:有多种亮度等级的图像;3:按照图像的光谱分类[

2021-11-10 16:38:46 787

原创 C++ 设计模式

设计模式是一套反复使用,多数人知晓的代码设计经验的总结。在项目中合理的使用设计模式可以完美的解决很多问题,提高代码的可重用性。让代码可以更容易的被他人理解,保证代码的可靠性和可维护性。一、设计模式的分类设计模式大致可以分为三大类:创建型模式:【工厂方法模式】【抽象工厂模式】【单例模式】【创造者模式】【原型模式】结构型模式:【适配器模式】【装饰器模式】【代理模式】【外观模式】【桥接模式】【组合模式】【享元模式】行为型模式:【策略模式】【模板方法模式】【观察者模式】【迭代器模式】【责任链模式】.

2021-11-10 14:47:28 700

原创 C# 中的委托事件和回调函数

委托委托通俗的讲就是将自己所不能做的事情交给其他人去做,但怎样才知道帮你做事情的人的名字呢,因此需要名字这个和特性。简单的委托在C#中委托就像是一个函数的指针,在程序运行时可以使用他们来调用不同的函数。首先是委托存储了方法名,还有参数列表(方法签名),以及返回的类型:delegate string ProcessDelegate(int i);在程序中使用委托来运行程序的话,需要满足以下几点:返回类型和委托的返回类型必须一致;参数保持一致;例如:using System;using

2021-11-10 11:32:34 1686 1

原创 交错并发和并行

交错并发和并行交错并发指的是代码中不同的部分可以在交叠的时间段内启动运行和完成。即使是在单核的计算机上也可以实现交错并发。在一个逻辑内核的计算机上交错并发多段代码的时候,通过时间分片机制和快速的上下文切换可以实现并行执行的假象。交错并发,代码在争抢硬件资源,所以交错并发运行所需的时间比单独运行一部分代码所需的时间要长。并发意味着很多代码可以同时运行,能够充分发挥底层硬件真正的处理能力,在单核的计算机上不可能实现并发,至少需要两个逻辑内核才能运行并行的代码,实现加速。示例展示Parallel.Invok

2021-11-09 17:25:26 263

原创 C++11新功能

新类型:C++11新增了long long和unsigned long long以支持64位的整形;统一的初始化C++11扩大了用大括号括起的列表(初始化列表)的适用范围,使其可用于所有内置类型和用户定义的类型(即类对象)。使用初始化列表时,可添加等号,也可以不添加:int x={5};double y{2.75}short quar[5] {4,5,2,76,1}初始化列表也可用于new表达式中:int * ar=new int[4]{2,4,6,7};创建对象时,也可使用大括号(而

2021-11-05 16:32:30 80

原创 浅谈C#垃圾回收机制

C#中有2个变量类型,一种是值类型,一种是引用类型,值类型是在栈上创建,这一类型用不到GC,引用类型是在堆中创建,GC主要是在这里管理对象。GC对每个对象有个引用计数,所有说只要有变量在引用它,计数器就不为了,一个变量不再引用这个对象,对象的计数器就减一,知道计数器为0时,对象就成为内存垃圾了(没有变量引用它),但是此时垃圾并没有回收。那什么时候回收呢,是在内存占用超过一定限度是,GC才启动,释放垃圾资源,说白了就是delete这些对象,将空间归还给系统。但是这还没完,空间释放后,内存空间就不连续了,所有G

2021-11-02 11:22:57 338

原创 C++ 友元

友元:在C++中友元分为三种:友元函数;友元类;友元成员函数;通过让函数称为类的友元,可以赋予该函数与类相同的访问权限。创建友元:创建友元函数的第一步,是将函数原型放在类声明中,并在原型声明前加上关键字friend....

2021-07-14 10:48:53 79

原创 C++ 运算符重载的使用

运算符重载:在C++中要使用运算符重载,需要使用被称为运算符重载的特殊函数形式。运算符重载的函数的格式如下:operatorop(argument-list);例如 operator+()重载的是+运算符,operator*()重载的是*运算符。被重载的运算符符号,必须是C++中的运算符,不能重载虚构出来的运算符符号。以时间相加的函数为例:1:常规的加法运算符操作:头文件:#pragma onceclass Time{private: int hours; int minutes;

2021-07-14 10:23:56 130

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除