自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 资源 (11)
  • 问答 (2)
  • 收藏
  • 关注

原创 QT学习笔记——总结篇

QT的学习笔记已经很久没有更新过了。以前我学习QT的思路是学习控件的使用方法,其属性,信号等等,然后在ui文件中拖动控件构建界面,然后为了显示出好看的控件学习了Qss样式表,但是这样的问题是,仅仅这样感觉就是个写界面的,离实际的项目编程离得有点远。那么如何解决这个问题呢?到底怎么学习编程这个问题在大约在大半年之前进入了我的脑海,什么是编程,qt在编程中起到了什么作用,实际项目编程中需要什么?进而我学习了软件工程的内容,大致了解下,其中关于面向对象的方法成为了我主要看的内容,在这样一段时间的学习之后,再看

2021-11-10 11:22:37 815

原创 Hexo + Github实现个人博客——纯文字教程

安装部分node.jsgitHexoGithub 账号安装node.js使用homebrewbrew install node然后使用node -v查看node.js的版本安装hexonpm install -g hexo-cli使用hexo -v查看hexo的版本新建myblog目录(名字任选)cd 目标目录mkdir myblog在myblog目录下进一步操作,因为如果安装或者配置出问题的话可以将这个文件夹删去重来使用hexo init生成博客这一步

2021-09-27 22:01:01 225

原创 Thread线程函数参数传递 C++篇

#include <iostream>#include <thread>using namespace std;void f(int i,std::string const& s){ for(int j=0;j<=i;j++) { cout<<s<<endl; }}int main(){ std::thread t(f,3,"hello"); t.join();

2021-09-17 11:00:35 2540

翻译 C++ try-catch简介

C++的Try-Catch是作为异常处理的一种手段,也是C++比C优势的地方。在实际应用中,比可能会遇到一些特殊情况,那些时候你无法控制变量的值,或者访问了不该访问的地址,这就会导致异常。在这种情况下,程序的运行可能会终止。Syntax of C++ Try Catchtry { // statement(s)} catch (ExceptionName e) { // statement(s)}在Try下的语句中,编写可能引发异常的语句,或者你可以抛出异常在Catch块中,你可

2021-09-17 09:02:43 2002

原创 Zemax学习笔记-Source Diode像散计算问题

As 像散计算方法:内容转载自光学社区评论光学社区评论文章

2021-07-06 10:29:25 1102

原创 Zemax学习笔记——光纤耦合输出光束整形(圆光斑)

光纤耦合是激光系统中常用的技术,光纤输出之后会针对各种实际应用设计光学系统,对光纤输出光进行整形,以满足工作距离和光斑形状的要求。假设使用的耦合传输光纤芯径0.2 mm,数值孔径NA为0.22,需要将波长为1064nm的激光输出光束聚焦到0.5 mm左右,工作距离约为70 mm。设置入瞳为NA,值为0.2。波长数据选择Nd:YAG。设置好之后使用默认评价函数优化。...

2021-07-02 14:53:45 5725 2

原创 Zemax学习笔记——序列模式点光源与平行光设置

发散点光源汇聚点光源平行光

2021-07-02 14:28:31 10772 3

原创 Zemax学习笔记——实战练习加深坐标断点和多重结构的理解

折叠镜设计(坐标断点)要求:将理想平面聚焦的汇聚光反射-90度。理想透镜焦距为100 mm。入瞳为20 mm。下一步插入坐标断点,将第2面旋转45度。这里我犯了一个错误,Zemax是局部坐标系,后一个面以前一个面作为参考,当我旋转坐标断面2时,后面的面跟着一起旋转45度,此时光线方向向上90度偏转,而此时像面位置由于我转动-45度所以保持在水平位置,正确的做法是再旋转45度到达竖直方向,且由于被反射,所以位置数值应为负数。这里将第三面镜子厚度设为0,以排除复杂的厚度运算。坐标

2021-07-02 14:05:04 3632 2

原创 Zemax学习笔记——多重结构配置的激光扩束镜

假设你需要设计一个激光扩束器,使用的波长为1.053 μm,输入光束直径为100 mm,输出光束直径为 20mm,且输入光束与输出光束平行。限制条件:只能使用两个镜片本设计必须是伽利略式的只有一个非球面可以使用镜片间隔不超过250 mm此系统必须在0.6328 μm下完成测试在具体设计前先分析一下设计的要求。这里出现了两种波长条件下的调试,所以多重结构一定是设置多波长结构(新手只能根据标题来推断一下多重结构用在哪里)也就是说我可以先按1.053 μm条件先设计,再通过添加多重结构去优化

2021-07-01 22:00:51 3765 1

原创 Zemax学习笔记——消色差透镜

消色差透镜由两片玻璃组成,通常胶合在一起,它们具有相同的曲率半径。借助不同材料不同的色散性质,实现第一级色差的矫正。Thorlabs 有很多设计好的双胶合透镜,在自行设计之前,先看一下他们的器件参数的实际效果。Thorlabs双胶合透镜实例演示:下面看一下其像质分析:弥散斑总体在10 μm左右。这里我设置三个面曲率为变量,探测面位置为变量,在评价函数中添加三个EFFL对应三个不同的波长进行优化。这是我设置并优化后的结果。效果明显差了一些。这里的原因在于后面选择的这三个波长跨度大了一些;第

2021-07-01 19:45:41 2691

原创 Zemax学习笔记——实战案例之单镜头设计

单镜头参数:F#:F/4焦距:100mmwavelength:808 nm材料:BK7第一步:设置初始参数F# = f/d得到入瞳d为25mm单镜头焦距为100,所以初始结构设定为:第二步:设定好结构后在Make Focal中查看当前有效焦距。目前焦距未达目标要求,我们可以在上面的设置中直接将数值改为100,这样系统也会达到目的,但一般系统的设计是否达到要求并不仅仅只看这个,还需要考虑像差等因素,所以一般不会采用直接缩放这种方法。第三步:查看像差图有经验的工作者可以直接在le

2021-07-01 17:56:32 5856

原创 Zemax学习笔记——Zemax序列坐标系理解及坐标断点

Zemax坐标系Zemax使用的是同大多数光学软件相同的右手坐标系。即我们伸出右手,大拇指所指方向为坐标系的z轴,四指指向为坐标系的y轴,四指弯曲指向手心向内为x轴正向。3D视图中看到的是系统窗口,这个窗口是全局坐标,坐标原点是使用者自己指定,默认情况是第一个表面中心为全局坐标参考。改变全局坐标参考的方法:第一种:单击“System - General - Misc”;第二种:直接在需要作为全局坐标参考的表面上单击右键Zemax序列模式下所使用的坐标系是局部坐标系,即每个表面都是参考它前面的

2021-07-01 11:13:26 10484 1

原创 Zemax学习笔记——多重结构使用方法

Zemax多重结构常用来设计变焦镜头,扫描镜头,优化镜头测试的多光路干涉系统和使用多波长多参数变化的结构。首先通过学习一个变焦镜头的例子来初步了解多重结构的功能。实例一:简单变焦镜头简单变焦镜头结构:入瞳直径:25焦距:75 - 125像面直径:34波段:可见光玻璃最小中心与边厚:4最大中心厚度:18优化最小 RMS Spot Diagram打开ZEMAX - samples - short course - sc_zoom1.zmx,点击L3d查看3D视图,根据这个来完善初始结构。

2021-06-30 21:03:35 21445 5

原创 Zemax学习笔记——默认评价函数的使用方法及注意事项

首先定义一个简单的光学系统设置一点光源,物空间NA = 0.3,物距为10mm,经过材料为BK7的单透镜厚度为5mm,透镜后表面距离像面40mm。打开评价函数对话框常用的优化目标有三种:波前优化(Wavefront);光斑半径优化(Spot Radius)和角半径优化(Angular Radius)且这三种一般均使用RMS优化算法。选项卡右侧可选择该目标的参考方式:质心参考(Centroid)和主光线参考(Chief Ray)。波前优化方法波前优化方法是以优化光线的光程差为目标,也称波相.

2021-06-30 10:45:42 13274 1

原创 OpenCV矩阵的基本操作

图像处理过程中,对图像矩阵的每一个元素进行操作是十分重要的。本博文对OpenCV中的Mat矩阵的操作做了一次总结,方便我自己查阅。下面是我参考的博文OpenCV—基本矩阵操作与示例opencv mat元素的遍历OpenCV Mat 常用的基础知识官方文档Mat 基础在计算机中,图像在本质上是一个数组。Mat就是图像在OpenCV中的表现形式。基本属性cols:矩阵列数rows:矩阵行数channels:通道数type:数据类型total:矩阵总元素数data:指向矩阵数据块的指

2020-12-27 20:59:14 986

原创 Matlab读取txt文件并保存日期格式信息

在数据处理的过程中,时间格式数据对于分析数据的时间特性是很有必要的,之前的博客有讲时间格式转换的内容,但在保存时间格式数据和其他类型数据,如double,int等时会出现无法同时保存的情况,用load读取时间格式也会出现问题。下面是我的解决办法:%读取1.txt里面的内容,每一行按照字符串,字符串,浮点数的格式读取,中间间隔为空格fid = fopen('1.txt');data = textscan(fid,'%s %s %f');fclose(fid);%读取的结果为三个元胞数组cell{1,

2020-10-23 12:56:17 2792

原创 面向对象学习小结

2019年7月31日我第一次写下开始学习面向对象的博文,到现在已经一年多一点了,对面向对象设计有了一些新的体会吧。这一年我并没有做什么面向对象的软件设计,不得不说一开始的基础太薄弱了,每次想要动手发现自己欠缺的太多了。而简单的系统软件,像之前那个销售管理系统,我可以做到,但老实说,我并没有感受到面向对象的魅力在哪里,我并没有怎么分离对象,也没有经历需求的改变,一切都在静态条件下完成的,我花了半天时间理解题意,半天时间解决一些数据读取保存的问题,然后就直接敲代码了,收获也是有的,面对对象的设计,将数据和方

2020-08-07 11:37:51 284

原创 h-dome算法的matlab实现

关于h-dome算法的原理请查看我之前的两篇翻译论文翻译论文1翻译论文2这两篇文章算是我学习h-dome算法的笔记,内容较为繁杂,表述不是很清楚,建议google:Morphological Grayscale Reconstruction in Image Analysis: Applications and Efficient Algorithms,英文原文看懂的话会更好一些。先简要介绍一下我的处理思路:初始化图像及参数——设定二值化阈值——判断是否遍历完255个灰度级——图像二值化——二值重

2020-08-06 10:42:49 493

原创 图像分析中的形态灰度重建:应用和高效算法 论文翻译2

应用篇在本节中,我们将强调二值重构以及灰度重构在图像分析领域的巨大潜力。1 Filtering by opening-reconstruction在二值情况下,我们用一个圆型结构化元素(或者其他形状的结构化元素)来滤除掉那些不能包含这个圆的像素点。二值图像 I 的开运算是那些可以完美包含圆形结构的点的并集。其表现为先腐蚀后膨胀。2 Use of top-hat by reconstruction for segmentation现在让我们在一个示例上说明灰度重建用于图片分割的一种可能用途:下图表

2020-08-03 17:06:32 1353

原创 图像分析中的形态灰度重建:应用和高效算法 论文翻译1

论文作者:Luc Vincent论文符号定义:图像I是离散平面Z2的有限矩形子集DI到离散灰度集的映射{0,1,…,N-1}。二进制图像I只能是0或者1这两个值中一个。在本文中,经常使用Z2来代替二进制离散集合。类似的,灰度图被看成函数或者映射。离散网格G包含于Z2Z2*提供了像素之间的邻域关系。当且仅当(p,q)属于G时,p和q是邻域关系。这篇文章我们将使用4邻域或者8邻域或者如图2所示的六角形网格。不过请注意,下面描述的算法适用于任何维度,任何尺寸的网格。4邻域8邻域六角形在Z2上的

2020-08-03 15:15:16 858

原创 Quantitative Comparison of Spot Detection Methods in Fluorescence Microscopy读后总结

高斯滤波是一种线性平滑滤波器,对于服从正态分布的噪声有很好的抑制作用。本文原理参考数字图像处理(冈萨雷斯版本),具体实现在VS C++ OpenCV:Mat上实现像素级操作。

2020-08-01 16:15:37 276

原创 VS + Qt中文乱码问题解决步骤

环境 VS2019 + Qt5.14.2解决步骤:1:扩展——管理扩展——搜索 Format On Save ——安装。2:工具——选项——Format On Save——setting——LineBreak ——选择 windows3:项目文件——右键——属性——C/C++——命令行——输入/utf-8——应用确认参考博文注意release/debug都要重新设置第三步,别问我为啥知道。。。。。。结果:不懂底层真的会绕很大的弯路,编译原理什么的,字符编码格式什么的,果然有时间还是要看一

2020-07-31 14:47:22 2296 6

原创 VS + Qt实现上位机串口通信:简单界面3

从textedit处接受文本内容并发送,但在实际应用中出现了换行符不显示的问题。搜了很多博客发现可能还是和字符编码形式有关。我现在采用的是这个方法:QStringList text = ui.textEdit_2->toPlainText().split("\n"); for (int i = 0; i < text.size(); i++) { serial.write(text.at(i).toLocal8Bit() + "\r\n"); }第一行是读取text

2020-07-31 10:13:58 1296

原创 VS + Qt实现上位机串口通信:简单界面2

继续上篇博文的内容,进行comboBox的设置先简要了解comboBox的自身属性以及signal信号。使用comboBox的目的是提前在其中设置好属性值,通过下拉选择某一项属性值,从而达到与外界信息交互的目的,所以首先是设置除串口号之外的下拉选择框的属性值。双击下拉选择框就能进入编辑组合框界面了,直接设置好了,无需编程。。回调函数也会很简单,当值或者索引改变时触发,回调函数则是serial.setPortName()那些函数即可。如:我选择的方式是初始化的时候赋一次值,每次槽函数调用赋一次.

2020-07-30 21:51:00 851 3

原创 VS + Qt实现上位机串口通信:简单界面

先实现简单功能与界面结合。在编写代码之前,首先要粗略了解页面的空间有哪些。首先是固定信息如:串口号,这些可以用label设置,一共7个。然后是显示框,接受和发送框,可以用textedit,一共2个。其次是5个下拉选择框,控件combo box。最后是2个pushbutton,一个控制串口的开闭,一个发送数据。其次我们要了解大致的回调函数有哪些,什么动作会产生什么响应首先是5个下拉选择框,5个trigger回调毋庸置疑。发送按钮的按下回调。打开关闭按钮的不同状态触发不同的槽函数。所以按钮有.

2020-07-30 11:07:02 3094

原创 VS + Qt实现上位机串口通信:简单实例,逐级测试

QserialPortInfo:获取串口信息并打印QList<QSerialPortInfo> serialList; //造一个空的QSerialPortInfo对象serialList = QSerialPortInfo::availablePorts();//给链表赋值为获取到的当前设备的所有串口信息的链表ui.label->setText(serialList[0].portName()+"\n"+ serialList[0].description()+"\n"+ se

2020-07-29 20:51:41 1116

原创 Qt学习笔记3

11

2020-07-29 15:15:49 211

原创 VS + Qt实现上位机串口通信:QIODevice类

QIODevice ClassQIODevice类是Qt中所有I/O设备的基本接口类。Public Typesflags OpenModeenum OpenModeFlag { NotOpen, ReadOnly, WriteOnly, ReadWrite, ..., ExistingOnly }enum QIODevice::OpenModeFlagflags QIODevice::OpenMode该枚举与open()一起使用,以描述打开设备的模式。 它也由openMode()返回。

2020-07-28 21:44:08 997

原创 VS + Qt实现上位机串口通信:QserialPortInfo类

QSerialPortInfo Class提供有关现有串行端口的信息。Note之前的博文简要介绍了QSerialPort类,完成串口的发送,接受,通信参数如波特率设置是足够了,但总觉得有点不足吧,我希望知道此时能够连接的端口有哪些,那个端口是连着我的设备的,因为可能大部分时间我都不知道我连接的是哪一个端口号。Public FunctionsQSerialPortInfo() //构造一个空的QSerialPortInfo对象。QSerialPortInfo(const QSerialPort

2020-07-28 20:58:11 625

原创 VS + Qt实现上位机串口通信:QserialPort类

Qt Serial PortQt串行端口提供基本功能,包括配置,I / O操作,获取和设置RS-232引脚排列的控制信号。要在应用程序中使用串行端口,请添加以下include语句: #include <QSerialPort>有关可用串行端口的信息,请使用以下include语句: #include <QSerialPortInfo>要链接该模块,请将以下行添加到您的qmake .pro文件中: QT += serialportNoteVS中没有pro文件

2020-07-28 16:54:58 2533 1

原创 VS + Qt实现上位机串口通信:环境搭建

VS安装 + Qt安装 :按照官方提示的步骤就可以了。下载安装结束后1,打开VS——扩展——管理扩展——搜索Qt Visual Studio Tools——安装2,扩展——Qt VS Tools——Qt Project settings——Qt Modules——select Modules——勾选Serial Port 模块在这里简要解释一下第二步的原因:我用QtSerialPort类的时候,第一次出现很多乱码,类似main.obj : error LNK2019: 无法解析的外部符号 "_

2020-07-28 15:22:50 1715 2

原创 配置Qt + opencv

折腾了整整一天时间,终于通过各种教程搞定了,我就不重复写内容了,这些参考博客地址我整理了放在下面。https://blog.huihut.com/2018/07/31/CompiledOpenCVWithMinGW64/https://blog.huihut.com/2017/12/03/CompiledOpenCVRunInQt/https://wiki.qt.io/How_to_set...

2020-04-17 09:46:48 158

原创 Qt学习笔记6

Qt框架简介main.cpp内容#include "widget.h"#include <QApplication>int main(int argc, char *argv[]){ QApplication a(argc, argv);//声明qt应用程序 Widget w;//创建一个名为w的widget类窗口,执行类构造函数 w.show...

2020-04-14 15:25:30 181

原创 Qt学习笔记5

Qt WidgetsQt Widgets 提供了一系列的UI元素给用户创建古典的桌面风格用户接口。查看用户接口可以得到更多的使用widgets的信息。Getting Started要包括模块类的定义,请使用以下指令:#include 要链接该模块,请将以下行添加到您的qmake .pro文件中:QT += widgetsWidgetswidgets是在Qt中创建用户界面的主要元素。...

2020-03-02 15:46:49 145

翻译 OpenCV API Reference-highgui

High-level GUI and Media I/OOpenCV是为了全面应用而设计的,不仅可以在功能丰富的UI框架(如,Qt,Win Forms,Cocoa,也可以完全不使用任何GUI)中使用。但有时需要快速实验功能,看见结果。这就是HighGUI被设计的初衷。它提供了一些简单的接口:创建并且对窗口的操作可以展示图像并且“remember” (这里的remenber不知道怎么翻译好?)...

2020-02-24 13:04:08 159

原创 面对对象设计4——实战销售业绩管理系统

看面对对象设计断断续续也看了半年了,类与对象的设计还是比较粗浅的,正好表弟遇到一个这样的题目,就想着实战一下试一试。一、总体介绍项目名称:销售业绩管理系统项目简介:(1)某企业有20个分公司,现对该企业的年销售业绩进行管理。(2)每个分公司的信息包括:公司号、公司名、公司经理、各类(包括服务类、货物类和工程类)产品销售额。二、具体要求系统功能要求有菜单提示各项功...

2020-02-03 20:15:14 243

原创 数值分析之牛顿插值

牛顿插值核心在于差商表的计算我之前很蠢的去用n阶差商表达式计算n阶差商,然后还在想,嗯?这和lagrange有啥大的区别吗?感觉难写又难算。。咳。。总之就是用你输入的节点值信息计算生成一个表,添加节点或者删去节点都只是在表中多添加一行,表中行列值相同的就是牛顿插值多项式的系数,用它们可以估计点的大小。如何生成表?我有一系列的节点信息值,作为第一列,第二列的值是前面那一列的差商,第三列的值是第...

2020-01-14 17:08:43 637

原创 数值分析之lagrange插值法

代码实现如下:float lagrange_result(float x[], float y[], float x0, int n) { float L = 0; float t = 1; for (int k = 0; k < n; k++) { t = 1; for (int i = 0; i < n; i++) { if (i != k) { t...

2020-01-14 16:02:14 387

原创 matlab之时间格式数据与dos命令

因为数据处理时经常用到时间,比如像按时间段分类等等,所以很有必要将时间数据的年月日,时分秒分开,我以前用的是字符串分离的办法,比较麻烦,今天再看matlab时间格式的时候发现一个很好用的方法,所以记录总结一下。第一:时间格式获取当前时间datestr(now);...

2019-12-27 19:30:21 417 1

原创 算法导论-插入排序递归形式C++实现

我们将插入排序描绘成下面一个过程:为了排好A[1…n],我们先排好A[1…n-1],然后将A[n]插入前面排好的序列中…依次类推。C++代码实现:

2019-12-06 14:16:10 577

光信息处理中傅里叶变换光学系统的研究pdf

傅里叶变换透镜

2021-07-14

序列模式Source Diode模拟.zip

根据网上的资料,自己整理了一下如何在序列模式中仿真Source diode的方法和注意事项,附带了zmx文件

2021-07-06

Zemax仿真笔记-source diode篇.docx

对zemax光源模型中的二极管光源进行了参数的总结与简要的介绍,里面缺少了像散的描述,具体请看博文https://allen928.blog.csdn.net/article/details/118514858,补充了像散的计算方法

2021-07-06

ZOS18.9_2018-11-19-Craker.zip

懂得都懂,OpticStudio适用版本见资源名称

2021-06-30

ZEMAX激光光学成像设计实例与应用——案例汇编.pdf

zemax光学设计的一些案例,仅供参考

2021-06-30

2020 Stanford CS110.zip

斯坦福CS110英文课件

2021-01-04

E. Loewen Diffraction Grating Handbook (2005).pdf

衍射光栅手册,学习光栅的技术资料

2020-12-22

串口练习小程序.zip

编程平台:VS2019 + Qt5.14.2版本,基于QSerialPort类和QSerialPortInfo类编写的串口调试助手

2020-08-08

HITRAN2012.par

HITRAN2012数据库,包含40多种分子的吸收线位置及强度信息,鉴于HITRAN官网能够获取的只有2004版本,其中某些信息已经有过调整,但高版本又被国外封锁,所以传上来喽

2020-07-28

销售业绩管理系统源代码.cpp

程序设计基础(课程设计):销售业绩管理系统 c++源代码,可运行,原创 课程设计简介: (1)某企业有20个分公司,现对该企业的年销售业绩进行管理。 (2)每个分公司的信息包括:公司号、公司名、公司经理、各类(包括服务类、货物类和工程类)产品销售额。

2020-02-03

面对对象分析与设计.pdf

面对对象分析与设计,软件工程必看书籍之一,详细介绍了类与对象的关系等等,最后还有开发实例参考,不可多得的必备书籍

2019-07-27

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

TA关注的人

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