- 博客(276)
- 资源 (4)
- 收藏
- 关注

原创 Beyond欣 个人博客目录
写博客主要为了记录自己学习内容,不论是个人技术水平还是文笔都是渣渣,定期同步到CSDN方便自己在任何电脑都能找到自己笔记,如果有人遇到跟我一样的问题也算顺带帮助下他人。Beyond欣 个人博客目录1. C++1.1. 抽象思维1.2. 底层思维1.3. 数据结构与算法1.4. Qt/C++1.5. CMake2. Python3. 模型/图像3.1. VTK3.2. Opencv3.3. ITK3.4. DCMTK3.5. HALCON3.6. CGAL3.7. D
2021-01-26 19:54:13
76

原创 KISS Dicom Viewer : 一个简单的 DICOM 浏览器
KISS Dicom Viewer : 一个简单的 DICOM 浏览器0 前言1 软件介绍1.1 软件命名1.2 使用拓展库1.3 程序架构1.4 代码规范1.5 软件界面1.6 参考代码2 开发计划和进度2.1 已经开发2.2 待开发3 如何实现3.1 显示ui --- 屏幕分割显示布局0 前言 一直没有找到一个合适的Dicom 浏览器。Windos下的小蚂蚁很好用RadiAnt Dicom Viewer但可惜不是跨平台的,只有Windos版本。平时工作系统是Deepin,虽然用deepin-win
2020-09-19 16:42:49
1081
11
原创 TortoiseGit 速度较慢 改用 openssh
TortoiseGit 速度较慢 改用 openssh 之前一直用GitKraken+小飞机在ubuntu下拉代码学习。最近把家里的电脑换成windos,我发现只要用TortoiseGit来拉代码速度永远15kb/s。已经开了代理,TortoiseGit也设置使用本地代理的端口速度就是上不去。但是直接git clone速度却正常。 翻到了这段说明https://www.iteye.com/topic/1124117,重装TortoiseGit。不用TortoisePLink改用openssh后果然
2021-02-27 08:15:22
8
原创 Qt ApplicationAttribute/WidgetAttribute 程序级别属性
Qt 不是开发语言,没有所谓的谁厉害。对于Qt本身来说老鸟跟新手区别只是谁遇到的问题更多。当然衡量Qter的水平主要还是看c++的水平。Qt ApplicationAttribute/WidgetAttribute 程序级别属性 今天测试时候换了一批新的电脑。linux/mac都正常,就win下显示有些问题。检查后发现,新装的win系统总是默认缩放150%,高清屏显示也是自带200%缩放。这个缩放会造成显示的一些问题。 QApplication::setAttribute(Qt::AA
2021-02-26 22:04:46
19
原创 Qt Designer 样式表 类型择器无效
Qt Designer 样式表 类选择器无效 Qt 样式表使用基本上就是:选择器 { 属性 : 值}选择器 : 状态 { 属性 : 值}选择器 : 辅助控制器 { 属性 : 值} 一般大一点正规点的程序都是把所有样式表放在一个.qss文件里统一加载。省事的话每个控件在Qt Designer里也可以直接添加样式表。至于使用那个要看继承设置,默认是最后一次setStyleSheet。 Qt Designer里添加的一方面好处就是所见即所得,但是有些情况下Qt
2021-02-26 22:03:55
15
原创 KISS Dicom Viewer 体渲染插件(利用vtk Volume 实现体渲染)
KISS Dicom Viewer 体渲染插件(利用vtk Volume 实现体渲染)项目地址:CodeChina kissDicomViewer详细介绍:CSDN 一个简单的 DICOM 浏览器 参考代码:可视化借鉴:F3D https://kitware.github.io/F3D/Volume Filter参数参考:GavriloviciEduard https://github.com/GavriloviciEduard?tab=repositories 参考资料:G
2021-02-07 21:31:09
62
原创 VTK DICOM 数据结构设计
VTK DICOM 数据结构设计项目地址:CodeChina kissDicomViewer详细介绍:CSDN 一个简单的 DICOM 浏览器 参考代码:Volume Filter参数参考:GavriloviciEduard https://github.com/GavriloviciEduard?tab=repositories目的 分享下自己在做 kissDicomViewer 时关于DICOM文件数据结构设计的思路。 自己用到过的 c++ 的开源DICOM协议使用主要有
2021-02-07 21:19:48
31
原创 打开 DICOM zip文件
打开 DICOM zip文件项目地址:CodeChina kissDicomViewer详细介绍:CSDN 一个简单的 DICOM 浏览器 小蚂蚁有一个功能,导入文件时支持DICOM zip文件,一般DICOM文件数量都比较多,大家相互拷贝的时候常常压缩成zip文件。小蚂蚁可以直接打开zip文件(读取里边所有的DICOM文件并显示)。小蚂蚁那么高的效率应该是自己实现zip文件的解压,在内存里直接判断是否DICOM文件,是的话直接拷贝出来。 我能想到的自己可以实现的办法就是:如果载入文件后缀
2021-02-04 20:07:29
33
原创 利用DCMTK实现dcm文件转图片 jpeg bmp dicom tiff pnm png
利用DCMTK实现dcm文件转图片 jpeg bmp dicom tiff pnm png项目地址:CodeChina kissDicomViewer详细介绍:CSDN 一个简单的 DICOM 浏览器实现功能 DICOM浏览器自然少不了当前打开文件转成图片的功能,可以导出当前选择层和全部层。根据当前打开的不同文件和选项输出单张图片或者序列图片。 本来想增加导出mp4的功能,可惜DCMTK没有现成的,需要引入ffmpeg。想了想还是等常规功能做完了以插件形式引入吧。需要注意文件输入:单张单
2021-02-04 20:04:56
47
1
原创 KISS Dicom Viewer:插件实现方法
项目地址:CodeChina kissDicomViewer详细介绍:CSDN 一个简单的 DICOM 浏览器KISS Dicom Viewer:插件实现方法 KISS Dicom Viewer:插件实现方法1 前处理1.1 图片前处理实现1.2 界面设计1.3 插件设计1.3.1 定义插件接口1.3.2 插件的实现1.3.3 插件的读取1.3.4 插件的调用2 多平面重建(MPR)3 三维重建(VR体渲染)4 图像融合 KISS Dicom Viewer计划做四个插件:多平面重建(MPR)
2021-02-03 22:10:22
65
原创 仿照小蚂蚁实现 sharpen smooth Edge Emboss
项目地址:CodeChina kissDicomViewer详细介绍:CSDN 一个简单的 DICOM 浏览器仿照小蚂蚁实现 sharpen smooth Edge Emboss 小蚂蚁有个功能是ImageFilters,模仿小蚂蚁也简单实现了一下。为了方便学习以及后续调整做成插件的形式。下边展示是小蚂蚁的四种Filters和自己目前实现的。利用了Qt的QtPlugin,如果对前处理结果不满意直接修改插件即可。实现方法 图像前处理思路就是每次再界面上刷新图片时调用一个模板函数QPix
2021-02-03 21:44:06
37
原创 QTreeWidget 实现检索、右键菜单等功能
如果需要一个高自由度的Tree视图,一般使用QTreeView+QAbstractItemModel+QSortFilterProxyModel+QStyledItemDelegate。QTreeWidget=QTreeView+QTreeWidgetItem(无法增加自定义接口) 图省事且明确知道需求不会增加,可以用QTreeWidget方便些。QTreeWidget 实现检索、右键菜单等功能 QTreeWidget是真方便,就怕你照着需求做完,项目经理让你加代理。增加表头和右键菜单c.
2021-02-01 22:10:00
40
原创 QInputDialog QDialogButtonBox 弹窗按钮设置中文
QInputDialog QDialogButtonBox 弹窗按钮设置中文 Qt默认弹窗都是英文,需要自己手动修改下才能改为中文。用qt5_create_translation的话,直接修改.ts文件。QInputDialog 修改前 QString dlgTitle = "系统设置登录"; QString txtLabel = "请输入管理员密码"; QString defaultInput = "******"; QLineEdit::Echo
2021-01-30 15:46:31
44
原创 c++ vector 和arma::vec引发的bug
c++ vector 和arma vec引发的bug问题描述: 算法组同学给的源码,自己集成进软件后简单测试了下没有问题。到生成环节被测试人员打回:软件体膜计算结果时好时坏,10次里有两三次错误,并且有四种错误结果。问题分析 BUG特点:随机性、发生概率比较小、每次错误后结果都不一致、开发人员自己单元测试正常。这种情况一般是越界或者返回局部变量的引用。排查步骤DEBUG模式下越界会直接抛出异常,返回局部变量的引用会有编译器警告。测试后均未出现。再试一下打断的挨个看,结果加了断点
2021-01-30 15:27:19
41
原创 2021 伊始:由一次找虐的面试引发的反思
2021 伊始:由一次找虐的面试引发的反思 今天晚上无心工作,自己纯粹去找虐。啥水平自己心里还是清楚地,基本地算法都没有看过一遍,c++基础也没有完整的看过一遍,就是个地地道道的面向百度cv编程。1. 这半个月的面试 12月底提出离职,简历挂到BOSS没事接几个面试(年后再投相中的几家规模不大的公司)。一个月下来,offer虽然拿了几个不过都是小公司,那种很水的面试。但凡有规模的一律初面就pass,谁叫我连基本地算法实现、基本数据结构、基本的网络知识、基本的操作系统都没有系统的学习过。不停的试水
2021-01-27 22:33:38
108
2
原创 C++ 面试 手写回调函数
题目很简单,但是每次看到这个问题都有别样的感觉。 讲真的,这个题是我19年7月刚准备转行做开发时去大华面试的一道题。那套题都是基础知识,可是我是完全小白,当时那张卷子写的真的是一言难尽,最后灰溜溜的走了。 那天花了俩小时从余杭跑到滨江,让后笔试做的稀里糊涂,连见面试官资格都没有。当天下午在滨江还约了另一个小公司的面试,上午做成那个样子,出来后下午没打算再去。回公司路上告诉自己再试一次吧,下午如果还是这个结果直接放弃转行吧,老老实实做机械设计吧。万幸,下午去的小公司没有笔试,面试官是搞算法的,c+
2021-01-27 19:38:33
48
1
原创 开源网站推荐:编程导航 部署到宝塔面板
开源网站推荐:编程导航 部署到宝塔面板开源作者 CSDN博客 程序员鱼皮github liyupi 最近在看到一篇博客 爆肝 200 小时,我做了个编程导航!,下载了下 编程导航主页 的源码体验了下,感觉很完美: 自身是c++桌面软件开发,一直想找一个满意的导航首页,自己写、md转成静态网页、找现成的前后试过各种导航首页,奈何自己对于前端和wdb开发一窍不通,一年了也没有有满意的。直到无意看见了这个编程导航主页,自己再改下简直完美呀。可惜JS/TS一点不会,还得花点时间学习下才能改
2021-01-26 21:59:42
84
2
原创 Linux 下Appimage 压缩解压命令
Linux 下Appimage 压缩解压命令参考 https://github.com/AppImage/AppImageKit1. 需求公司有几款产品打包成appimage的形式,现场测试时有时需要替换其中几个库(比如加密狗、图片等),就需要解压文件然后在压缩。本来认为需要每次打包后无法修改。翻了下官方介绍才发现,appimage支持直接压缩和解压。2. 打包好的 Appimage 解压--appimage-extract extracts the contents from the emb
2021-01-26 19:30:37
85
原创 C++ 构造函数初始化列表
这个问题面试被问烂了,关于这个介绍很多了。看十遍不如自己写一遍c语言中文网:C++构造函数初始化列表C++ 构造函数初始化列表初始化列表并没有效率上的优势,仅为了书写方便初始化列表的顺序只跟声明顺序相关,使用初始化列表时请根据声明顺序初始化!!!class T { public: T (): b_(10), a_(b_) { std::cout << a_ << "," << b_ << endl;
2021-01-24 17:13:36
46
原创 C++ const 关键字作用
这个问题面试被问烂了,关于这个介绍很多了。看十遍不如自己写一遍原文链接C++ const 关键字作用面向过程修饰局部/全局变量 修饰的值只能使用,无法修改。修饰时必须初始化;修饰指针 const在*左边(左定值):修饰指针指向内容,内容不能变指针可以变。 const在*右边(右定向):修饰指针本身,指针不能变内容可以变。 const在*两边:修饰指针和内容,指针内容都不能变。修饰函数参数 传递变量:传入值无法修改 传递引用:引用方式传递参数且传入值不能改
2021-01-23 23:28:22
26
原创 利用QTimer实现Dicom 播放功能
做kissDicomViewer需要影像自动播放。记录下每天学习内容项目地址:CodeChina kissDicomViewer详细介绍:CSDN 一个简单的 DICOM 浏览器利用QTimer实现 Dicom 播放功能1. 效果 支持自动循环播放、快进、快退、播放速度调整、到第一针/最后一针。 界面小于一定宽度,自动暂停并隐藏播放栏。2. 实现 双向绑定 进度条值得变化 <==> DICOM 显示帧变化 。 利用QTimer的定时发送信号功能,调整进度条
2021-01-23 22:04:12
41
原创 DCMTK 遍历 DICOM 标签/Tags 并 可视化
做kissDicomViewer需要用到遍历标签功能。记录下每天学习内容项目地址:CodeChina kissDicomViewer详细介绍:CSDN 一个简单的 DICOM 浏览器DCMTK 遍历 DICOM 标签/Tags 并 可视化1. 效果 请无视目前样式,这个只是自己做遍历标签可视化测试用的。后续会抄小蚂蚁加上搜索、右键拷贝值、拷贝全部值、拷贝键等等。 区分MetaInfo和DataSet 四层嵌套显示效果2. 现成接口,转成其他格式后再解析 做DICO
2021-01-22 22:04:42
110
原创 MD语法,代办事件和已完成代办事件
MD语法,代办事件和已完成代办事件 说来尴尬,用md记录笔记有一年了,今天快捷键按错了才发现MD语法有已完成事件和待完成事件…用了下感觉发现了新大陆。* 起床* 写代码* 睡觉起床写代码睡觉* [x] 起床* [x] 写代码* [ ] 睡觉 起床 写代码 睡觉...
2021-01-21 22:57:58
51
原创 c++ static 作用
c++ static 作用1.1. 面向过程全局变量和全局函数 修饰前全局可见,修饰后只在当前文件可见。同一类有多个对象,用到相同的变量可以在开头声明下。修饰局部变量 这个值只第一次初始化,然后保留。以后每次再进入这个函数时候值依然留着。可以作为一个标志,或者递增使用1.2. 面向对象修饰类的成员变量 这个类的所有对象共用这个成员变量。静态成员变量。加锁、单例等,同一类不同实例需要共享数据时使用修饰类的成员函数 这个成员函数不需要实例化就可以
2021-01-21 22:56:50
25
转载 C++ new和malloc的区别(转载)
这个问题面试被问烂了,关于这个介绍很多了。看十遍不如自己写一遍C++ new和malloc的区别(转载)原文地址https://blog.csdn.net/nyist_zxp/article/details/80810742https://www.zhihu.com/question/281940376/answer/914142481 c++有堆内存和栈内存之分。本来全部都是堆内存,栈内存的出现:花一点点cpu的时间,极大缩短开发时间和实现内存自动管理。 new和malloc都是
2021-01-21 22:55:44
20
原创 Qt widget 增加边框
Qt widget 增加边框 Qt自带很多控件,使用时经常需要给显示的窗口增加边框。实现方法也有很多:样式表QPaint直接画QFrame1. 样式表增加边框2. QPaint增加边框3. QFrame增加边框 QFrame是基本控件的基类,他继承自QWidget主要增加了边框的功能:图片来自 doc.qt.ip enum Shape { NoFrame = 0, // no frame Box = 0x0001
2021-01-19 22:01:38
322
1
原创 C++ 多态和析构虚函数
面试被问道具体名词解释,知道啥意思,表述不清。难受。C++ 多态和析构虚函数C++ 多态和析构虚函数1. 多态含义2. 如何实现多态-虚函数3. 纯虚函数4. 析构函数5. 虚函数必须在外部实现6. 构造函数不能是虚函数7. 虚函数实现原理7.1.1. 虚函数类的构造7.1.2. 虚函数类的调用C++ 多态和析构虚函数注意:1.一个类如果使用了虚函数,请把他的析构函数也改为虚函数。2.保证至少有一个虚函数不是内联实现的。1. 多态含义 多态,字面上看多态就是多种形态。类存在继承关系
2021-01-19 19:45:55
35
原创 DCMTK 调用时控制台信息过多
DCMTK 调用时控制台信息过多 dcmtk集成了很多功能,虽然是个库,同时本身也提供了很多可执行程序(bulid/bin下)。dcmtk提供的现成程序都支持本地日志生成(使用的log4cplus),在作为库调用时也有大量调试信息输出,集成进自己软件后不需要那么多默认的调试信息,修改办法。 /** set up the logging and enable it * @param level the verbosity that you want */ st
2021-01-19 11:47:55
29
原创 DCMTK 检测到“RuntimeLibrary”的不匹配项: 值“MT_StaticRelease”不匹配值“MD_DynamicRelease”
DCMTK链接时报错:ofstd.lib(ofcond.obj):-1: error: LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MT_StaticRelease”不匹配值“MD_DynamicRelease”(mocs_compilation.cpp.obj 中)解决办法: 没有生成动态链接库,重新编译下就可以...
2021-01-18 19:47:21
60
原创 C++ 指针和引用
最近几个周末约了去面试,很多被问烂了的基础问题竟然回答的一塌糊涂。这里记录下,希望以后别再忘了。内容摘抄自菜鸟教程,和一些个人看法。 菜鸟教程:C++ 教程 C++ 指针和引用C++ 指针和引用C++ 指针和引用1. 指针和引用的区别2. 指针3. 引用4. 引用&&指针 作为参数4.1. 常引用5. 把引用&&指针 作为返回值6. 引用&&指针 实现多态1. 指针和引用的区别 很多情况直接替换就可以。不存在空引用。 指针不
2021-01-17 22:54:20
97
原创 小乌龟 TortoiseGit使用本地代理
这样也可以git config --global https.proxy http://127.0.0.1:12333git config --global https.proxy https://127.0.0.1:12333
2021-01-17 17:31:49
21
原创 failed to update PAC file
替换一下 pac.txt共享地址:http://118.25.63.144:505/index.php?share/file&user=1&sid=k3fNzmvZ 提取密码:qBpvv详情见https://github.com/gfwlist/gfwlist
2021-01-17 17:13:23
222
原创 c++ explict关键字使用
应该尽量不要使用转换,尽量使用显式转换来代替隐式转换。c++ explict关键字使用 转换就是一个类型转换成另一个类型:隐式转换,系统跟据程序的需要而自动转换 int a = 10, b = 10; double c = 10.0; std::cout << a + b + c << std::endl;显式转换,强制转换,是自己主动让这个类型转换成别的类型 int a = 10, b = 10; double c .
2021-01-14 19:36:01
27
原创 c++ 给类取别名
平时有用到itk(全是模板类和模板函数),使用起来又长又晦涩。一般都是给类取个别名。c++ 给类取别名 c++ 11 给类取别名的方式有两个using和typedef。template <typename T>void Test(T a) { typedef typename T::list Self; using Self1 = typename T::list; Self b; Self1 c; std::cout << a
2021-01-14 19:35:23
84
原创 c++ 模板编程
平时有用到itk(全是模板类和模板函数),真实使用情况就是每次copy下官方案例的代码。由于c++这块当时是自学的,模板函数tempplate、typename、typedef、using只是大概知道是个什么意思,每次看到基本就是忽略了。这次刨根问底一下吧c++ 模板编程目的:能够实现非常灵活的类型安全的接口和极好的性能。同时简化代码,减少重复代码。常见的工具std::function,GTest都是借助模板实现的。弊端:复杂的地方大量使用模板让人看的崩溃。结论:如果你使用模板编程,
2021-01-14 19:34:42
32
原创 内联函数inline 什么时候不展开
最近去面试问到了,这里记录下内联函数inline 什么时候不展开 如果不是从源码编译的话,找不到实现就不展开了。inline写在定义上而不是声明上,函数写头文件而不是源文件增加程序体积,提高程序运行效率。空间换时间。一般很短的(10行内)函数用这个。减少函数调用的开销,预编译的时候把函数内容抄到被调用的地方。...
2021-01-14 19:34:10
67
原创 解决哈希冲突的办法
面试问到了,回来感觉需要记录下。解决哈希冲突的办法链地址 相当于重复的键单独搞个链表公共溢出区,把重复的键集中存储多搞几个哈希函数,第一个重复了用第二个开放定址,冲突后用冲突的键再产生一个新的地址 QHash 默认情况下根据不同的键产生不同的哈希函数(提升搜索加密解密速度)。 QHash为了防止被针对攻击,默认情况下采用随机数生成哈希函数。...
2021-01-14 19:33:39
55
原创 opencv 转 QImage
opencv 转 QImage 办法可能不是最优的,性能自己可以接受。判断图片类型图片本身类型是Float,直接转换成uchar图片本身类型是schar,直接转换成uchar判断图片通道单通道 构造一个跟图片尺寸一样,类型Format_Indexed8的图片。把像素索引改成0-255。QImagescanLine依次获取一列首地址,memcpy内存拷贝每次拷贝图片一列值。 三通道 QImage有一个构造函数,传入图片data首地址、长、宽、step、类型For
2021-01-14 19:33:02
59
原创 Qt 图像数据相关类
Qt 图像数据相关类 Qt 提供了几个类用来处理图像数据:Qt 图像数据相关类Qt 图像数据相关类QImageQPixmapQBitMapQIconQPicuterQImage 最常用的,对I/O操作进行优化。QPainter可以直接画上去读取、保存、操作像素都用QImage显示性能低于QPixmap支持十几种图像格式(Format)提供了一组函数,可以获取图片的各种信息、修改图片像素Qt的图像处理类只有QImage,其余几个仅仅是用于画图和显示。QPixmap 针.
2021-01-14 19:32:19
56
原创 软件推荐 VNote 程序员个人笔记神器
软件推荐 VNote 程序员个人笔记神器 由于嫌弃CSDN广告活动比较烦,前段时间重新搭建了自己的个人博客,分别体验了三个比较主流的开源知识体系。ZBlog + 拓源纯净主题WordPress + 默认主题MediaWiki + Tweeki + 设置仅自己可编辑 三个都体验过之后,最后留下了ZBlog。勉强用了ZBlog有半个月,编辑体验实在难受。搞得好像每天为了记笔记而记笔记。 冷静过后,想想自己写博客的初衷,再翻看自己写19年刚开始决定转行码农时写的博客。写博客主要是为了搭
2021-01-14 19:31:13
113
WriteDcmSrc.zip
2020-04-12
HalconTest.zip
2020-04-12
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人 TA的粉丝