上一篇博客我们介绍了C++调用python的环境配置,这篇博客介绍下C++调用python时的参数传递方法,包括如何传递 变量、结构、字典、数组、图像以及多维数组。
软件编程
Visual Studio在直方图、曲线、图像调试插件
现在主流的IDE都广泛支持安装插件来实现各种有用的功能,在使用Visual Studio 2019/2017开发工具时,如果要在调试状态下查看C++中某个数组,像matlab或python的plot一样画出曲线和直方图,或者查看内存中的图像裸数据,都有插件可以实现,这里介绍三个免费的工具插件:Image Watch查看图像,ArrayPlotter将数组plot成曲线,Graphical Debugging(Plot Watch)查看直方图。
WSL安装Pytorch
参考链接:Enable VIDIA Cuda in WSL2 Win10使用Ubuntu+VSCode写pyt … 阅读更多
看一看泄露的Windows源码(一)源码目录结构
昨天有一份42.9G的windows源码包泄露出来,包括多个Windows、Windows Searver发行版的源码,最重要的是Windows XP和Windows Server 2003目前依旧运行在很多老旧的电脑上,如果有漏洞被拿来利用,可能产生很严重的危害。
博主在数年之前就拿到过Windiows Server的源码,但是代码很杂,也编译不了,不过这次源码泄露范围更广,在各个社区也有分析,并且已经有一些人编译成功了(本来还以为需要微软内部的工具集,看起来泄露的压缩包里都有了,微软糗大了),可以跟着学习一波,先简单看下,能不能从里面抽出一些有用的工具。
Image Watch支持自定义的图像类型
自制操作系统(二)保护模式
上一篇博客我们简单写了一个引导,还没有进入系统,在进入系统之前,我们有必要先了解下CPU的实模式和保护模式。我们的程序不加任何保护,直接运行在CPU上,称为实模式,16位实模式最大寻址空间为1M。CPU可以通过保护模式拓展寻址空间,并进行访问权限管理和校验,32位保护模式的寻址空间可以拓展到4G。在保护模式下物理内存、页、中断都会保护起来、不同特权级下IO端口也不能随意使用。
在jupyter中使用imshow显示opencv图像
jupyter中用cv2.imshow打开窗口进行显示后不能点击关闭按钮,否则消息处理机制会导致python挂掉。那么只有用matplotlib来画了,由于numpy和opencv的rgb通道排列是反的,所以做一个转化就可以了,粘贴下面代码里的函数,直接调用就好。
通过VBA制作Excel田字格
制作Excel田字格的话,可以通过单元格格式+线条的方式快速制作,博主在玩儿VBA,也顺带编(摘)写(抄)了一个小工具,可以方便一键生成田字格。后面如果有更多有用的小功能的话再做一个插件来玩儿。
使用labelme标注landmark点
标注landmark的话,人脸landmark标注工具比较多,但是想要标注其它物体的landmark点,可能就要自己动手了。labelme作为一款开源好用的多边形标注工具,博主借用labelme多边形标注的json文件,将其转化成landmark点的文件(博主这里使用的是.pts文件),这样我们就可以先标注好多边形,将多边形的顶点作为landmark点。
使用Octave规避Matlab版权问题
Octave,全称GNU Octave。看到GNU三个字母,那么就知道它是自由使用的、免费的、开源的、全平台的。Octave设计的初衷就是提供一套可以提单Matlab的软件。所以严格按照Matlab基础语法编写的代码是可以不经修改直接在Octave运行的。
Matlab是商业软件,所以在一些专业领域的工具箱,以及GUI界面方面比Octave要优秀。Matlab动辄20G,而Octave只有200M,并且Octave已经集成了很多常用的工具箱(信号仿真,滤波器设计,图像处理,计算机视觉等等),如果不是Matlab比较新的功能,Octave在使用上和Matlab是没有差别的。(近年Matlab语法有些小改动,不过无伤大雅)
Matlab调用OpenCV的三种方式
Matlab本身有着出色的图像算法分析工具,但有时我们出于速度和开发的需要,在matlab中调用opencv辅助处理,那么如何在matlab中调用opencv呢?这篇博客介绍三种方式:Matlab嵌入C++,使用mexOpenCV第三方工具,使用Matlab官方提供的Computer Vision Toolbox中的OpenCVInterface。
Matlab与C++混合编译之Matlab版本选择
Matlab中混编C++可以在提高代码效率的同时保持良好的脚本调用,在Matlab中可以用mex来编译C++代码,mex的命令怎么用可以直接doc mex看到。这篇博客主要因为博主需要跨平台编译,刚好遇到Matlab版本不同而产生的一些奇奇怪怪的问题,主要是记录博主自己踩过的坑。