上一篇博客我们介绍了C++调用python的环境配置,这篇博客介绍下C++调用python时的参数传递方法,包括如何传递 变量、结构、字典、数组、图像以及多维数组。
python
C++调用python(一)环境配置
使用Pybind11可以让python来调用C++,使用python本身的库也可以让C++来调用python函数,以实现C++和python相互调用,实际上我们还可以同时调试C++和Python(混合模式调试,正如封面展示这样),混合模式调试要使用Visual Studio调python,后面博客会介绍C++调用python的传参和混合模式调试,这篇博客主要先介绍C++调用python的流程:
在jupyter中使用imshow显示opencv图像
jupyter中用cv2.imshow打开窗口进行显示后不能点击关闭按钮,否则消息处理机制会导致python挂掉。那么只有用matplotlib来画了,由于numpy和opencv的rgb通道排列是反的,所以做一个转化就可以了,粘贴下面代码里的函数,直接调用就好。
使用MatlabLib制作动画图表
制作简单的动态图表,用Matplotlib就可以了,Matplotlib中的FuncAnimation类可以通过一个迭代器不断创建图像帧,最后可以通过plt.show,或者直接save,将帧拼成动画保存下来。原理非常简单,博主简单做下记录,没有太多介绍。
前排放个参考链接,里面有更多炫酷的动图制作代码:Animatin-With-Matplotlib
Python中类似Matlab-interp2的插值函数:RectBivariateSpline与interp2d
在matlab中我们可以通过interp2在矩形网格内进行曲线插值,那么在python中有没有有类似的函数呢?有,并且有很多,都在scipy.interpolate模块中。这篇博客主要说两个比较相似的:interp2d和rectBivariateSpline。两者比较相似,如果输入是规整的网格点,那么使用rectBivariateSpline会更快。下面给一些介绍和例子:
阅读更多Python中类似Matlab-interp2的插值函数:RectBivariateSpline与interp2d
Numpy计算2×2块平均(均值池化)
用numpy求2×2块平均,详细的过程参见链接:https://www.cnblogs.com/rrttp/p/8028421.html
博主给一份简介的代码:
Python解析Raw格式图像
简记下使用rawpy提取raw图像并转化为rgb。rawpy就是libraw的python封装,rawpy.imread直接可以读到raw数据,postprocess方法可以走完isp(BWC、RBGain、demosaic、gamma),得到一副RGB图像。postprocess的参数可以用来控制后处理流程,raw还有enhance模块,主要封装了坏点矫正,更细致的修改查阅官方文档。
Pytorch图像分类之ShuffleNet
在图像分类应用下,诞生了不少经典网络。ShuffleNet以速度快和便于移植而著称,这篇博客将简单介绍ShuffleNet,以及Pytorch下模型的训练、保存、微调、生成CaffeModle。
PyTorch:The “freeze_support()” line can be omitted if the program is not going to be frozen
在windows上运行pytorch时,稍不注意就会遇到freeze_support()的错误。解决这种错误只 … 阅读更多
Python生成QRCode并识别QRCode
最近在想把文件编码到图像,于是就先试着把文件编码到了QRCode,然后再解码恢复。python生成qrcode的包就是qrcode包,识别二维码并解码使用的是zbar。这篇博客就简单说下这两个工具的使用。
Python调用Lua:Lupa
lua与python均为成熟的脚本方案,它们的不同在与体量,Lua的体量小,高效的执行方式适合嵌入式,python胶水的强大不言而喻。那么如果自己已经有了lua脚本的解决方案,python能否调用呢?答案是肯定的,这篇博客将介绍python中集成的lua环境包:lupa,简单介绍该工具的使用。
No module named ‘matplotlib.finance’
产生该错误的原因是matplotlib的代码维护者希望他们的代码干净,就把这种sidepackage给移除了, … 阅读更多
使用python脚本更改pip包源
在国内,可以直接在C://用户名//pip//pip.ini创建并修改源,使用如下脚本可直接创建pip配置文件并进行修改。