zeeq_
A WHU LIESMARSer
展开
-
使用pyshp写出shapefile文件方法示例
其中,要组成一个Shapefile,有三个文件是必不可少的,它们分别是".shp", ".shx"与 ".dbf"文件。而其中“真正”的Shapefile的后缀为shp,然而仅有这个文件数据是不完整的,必须要把其他两个附带上才能构成一组完整的地理数据。所有的文件名都必须遵循MS DOS的8.3文件名标准(文件前缀名8个字符,后缀名3个字符,如shapefil.shp),以方便与一些老的应用程序保持兼容性,尽管现在许多新的程序都能够支持长文件名。Shapefile文件用于描述几何体对象:点,折线与多边形。原创 2023-06-01 00:21:30 · 551 阅读 · 0 评论 -
python安装好了某个包但是仍报错ImportError: No module named xxx的解决方法及思路
这是一个应该比较常见的问题,下面首先讲一下该类问题的一般解决 思路,然后再进行一个自我debug的过程描述。原创 2023-03-08 10:01:31 · 26647 阅读 · 2 评论 -
windows上安装并使用exiftool修改图像exif信息
使用exiftool可以对图像的exif信息进行读取、修改、写入等操作。原创 2023-01-02 16:06:54 · 6772 阅读 · 3 评论 -
圣诞节快到了,我可以拥有一个圣诞树词云吗——python给定蒙版生成词云
python圣诞树原创 2022-12-29 14:31:21 · 309 阅读 · 0 评论 -
pytorch3d旋转矩阵转四元数transforms.matrix_to_quaternion函数隐藏的大坑及其解决方法
这样就存在一个非常大的隐患,因为我们知道,对四元数中的所有数字同时取负,那么它所表示的旋转是不变的。也就是说,matrix_to_quaternion函数转换获得的四元数本身并没有错,但是它没有限制其中的实数w为正,这样就会在诸如我们需要使用四元数的二范数作为网络loss的时候,埋下巨大的隐患(毕竟如果同一个旋转量,一会是正一会是负,网络该信哪个?按照官方解释,每个四元数的第一个数字为实部w,通常我们会规范实部为正数,而如下图所示的输出,很明显,它没有进行这一约束。如下图所示,就是使用。原创 2022-12-11 21:48:54 · 2339 阅读 · 3 评论 -
AttributeError: module ‘matplotlib.cbook‘ has no attribute ‘iterable‘及同类型报错问题的一般解决思路与注意事项
也就是说,比如我现在要跑的这个代码,是作者2020年那会儿公开的,那么,我就可以找一下matplotlib在2020年左右时候的版本号。当然,安装上面说的3.1.0版本是不会报错的,我已经安装成功了。好在使用pip卸载和安装库很方便,所以在针对具体问题的时候,我们可以多尝试不同的版本,从而找到一个合适的匹配。通常是版本太低造成的,比如在后续更新过程中,该方法被改变了,所以再使用以前的方法名,就会报错找不到该方法了。最简单的就是,将已经安装的出错的库卸载掉,然后重新安装更低(或更高)版本的即可。原创 2022-10-24 20:29:36 · 10283 阅读 · 0 评论 -
对图像和相机参数进行同步缩放的方法及python实现代码
相机的内参和图像的大小是紧密相关的。如果在实验中涉及到对图像进行采样,同时还想要获得图像变换后的相机参数,那么,对相机内参也需要进行同步缩放。对相机参数的修改主要包括相机的内参矩阵K和图像的长宽参数,而相机外参和畸变参数则不需要作修改。对图像进行下采样,一般有两种方式,一个是使用python自带的PIL(Pyhon Imaging Labrary)模块实现,另一个是使用cv2实现。至于为何是这样变换的,可以参考。原创 2022-10-02 13:41:40 · 1705 阅读 · 2 评论 -
本地PyCharm配置ssh进行远程开发教程
主要包括connection里的SSH服务器ip和密码的设置,以及mappings里的本地路径和部署路径的设置(需要注意保持这两个根目录名称一致)。连接相关的设置可以在tools->deployment->configuration里进行设置。原创 2022-09-23 20:00:22 · 11267 阅读 · 2 评论 -
二分类结果评价之TP、FP、TN、FN及准确率、精确率、召回率、F1得分的计算方式和python代码实现
混淆矩阵也称误差矩阵,是表示精度评价的一种标准格式,用n行n列的矩阵形式来表示。在二分类场景里是一个2x2的矩阵。如下图。TP(True Positive):真正例,实际上和预测中都是正例;FP(False Positive):假正例,实际上是负例,但是被预测为正例了;FN(False Negative):假负例,实际上是正例,但是被预测为负例了;TN(True Negative):真负例,实际上和预测中都是负例。import numpy as np# 计算混淆矩阵def compute_原创 2022-05-29 11:10:02 · 12202 阅读 · 4 评论 -
使用普鲁克分析对两组相机/三维点(已知对应关系)进行相似变换对齐的方法及python代码
对两组相机进行对齐,需要首先明确相机坐标系的定义方式,有两种:Xworld = RXcamera + tXcamera = RXworld + t 这两种坐标系的定义是不一样的(其实它们就是一个互逆变换的过程),弄错了的话就没法获得正确的转换结果了(关于这两种坐标系的转换关系,这篇博客里有说明)。在明确了坐标系定义之后,就可以进行计算了。 转换代码参考BARF论文github源码,链接。下面将两种坐标系下的相机组对齐方法都放出来。 1 世界坐标系定义 如果你的坐标系是按照如下方原创 2022-05-21 22:34:00 · 1780 阅读 · 0 评论 -
cvxpy.error.SolverError: Solver ‘ECOS‘ failed. Try another solver, or solve with verbose=True...解决方案
CVXPY是斯坦福大学凸优化组开发的一个Python软件包。方便用户以数学形式定义凸优化模型,而不受限于求解器(solvers)。其github地址为https://github.com/cvxpy/cvxpy。这里遇到的报错信息如下:cvxpy.error.SolverError: Solver 'ECOS' failed. Try another solver, or solve with verbose=True for more information. 意思是我使用的求解器ECOS求解失败原创 2022-05-15 13:54:46 · 172 阅读 · 0 评论 -
两组相机(或三维点)对齐方法介绍及实现代码(求解相似变换,包含旋转R、平移t、尺度s)
这个变换用于将生成的稀疏重建场景对齐到真值上。由于SfM(Structure from Motion,运动恢复结构)求解的结果是尺度未定的,所以重建场景与真值之间不仅会相差一个旋转与平移,还会存在尺度缩放。待求解的问题可以描述为:已知一组相机(个数为m)的位姿真值Rgt、tgt和预测位姿Rpred、tpred,现要将预测值对齐到真值上。它们之间会相差一个相似变换Msimilarity,包括尺度s、旋转量R、平移量t,可以根据如下步骤进行求解: 1 求解旋转R 首先计算所有m个相机的位姿差异总和原创 2022-05-13 16:34:58 · 3592 阅读 · 8 评论 -
numpy实现array数组隔行切片及其逆操作隔行数组扩展的实现方法
假设现在有一个array a,我想要每隔一行取一行,然后将结果拼接起来,获得array b,如下所示:a =[[ 0., 1., 2., 3., 4.], [ 0., 1., 2., 3., 4.], [ 5., 6., 7., 8., 9.], [ 5., 6., 7., 8., 9.], [10., 11., 12., 13., 14.], [10., 11., 12., 13., 14.], [15., 16., 17., 18., 19.],原创 2022-04-27 21:10:53 · 3780 阅读 · 0 评论 -
用向量叉乘快速判断点在三角形内外原理与代码
import numpy as npdef inTri(a, b, c, p): ab = b-a ap = p-a bc = c-b bp = p-b ca = a-c cp = p-c if np.cross(ab,ap)>0 and np.cross(bc,bp)>0 and np.cross(ca,cp)>0: # 在三角形内部 return 1 if np.cross(ab,ap) * np原创 2022-03-30 00:37:18 · 7140 阅读 · 1 评论 -
numpy ndarray构建符合条件的索引数组——使用np.stack和np.where
首先介绍一下np.stack和np.where两个方法: 1 np.stack() np.stack()函数定义为numpy.stack(arrays, axis=0),用于将多个具有相同形状的array按某个维度进行堆叠,默认是在0维度上(可以理解为在哪个维度上就是增加哪个维度)。更为详细的介绍可参考这里,如下一个简单例子:>>> import numpy as np>>> x = np.arange(9).reshape([3,3])>>原创 2022-03-03 16:31:46 · 1467 阅读 · 0 评论 -
使用pyinstaller将py文件打包成exe注意事项及报错TypeError: _get_sysconfigdata_name() missing 1...‘check_exists‘的解决办法
使用pyinstaller,我们可以很方便地将py文件打包成exe。打包命令为:pyinstaller -F -w xxx.py 其中:-F参数表示将所有内容全部打包成一个exe可执行文件,而不会有其它的一些奇奇怪怪的小依赖文件。-w参数表示运行生成的exe文件时,不会弹出命令行窗口,而是直接弹出我们做的GUI。如果没加这个参数的话,在打开生成的exe文件时,会同时弹出一个如下所示的命令行窗口,冗余且不美观: 在打包的时候,有一些问题需要注意一下: 1 生成的exe文件过大原创 2022-02-16 14:02:38 · 4514 阅读 · 0 评论 -
python torch节约内存开销的运算方法
示例如下,首先创建两个两行一列,值全为1的张量a和b,然后将b加到a上,使用python自带的id函数来获取a和b的内存地址。下面依次演示不同方法获得结果的差异: 1. +运算a = torch.ones(2,1)b = torch.ones(2,1)before_id = id(a)a = a + bafter_id = id(a)before_id == after_id 输出为:False 2. +=运算a = torch.ones(2,1)b = torch原创 2022-01-23 12:26:14 · 1243 阅读 · 0 评论 -
python中@运算符和*运算符在矩阵乘法中的区别与作用
我们在看python程序时,经常可以看到@运算符和*运算符,其中@运算符在传统python中通常是作为装饰器使用的。但是在Python 3.5之后,它又具备了矩阵乘法运算的功能。下面使用示例来对比这两个运算符对矩阵运算的影响: 导入用到numpy包:import numpy as np 创建一个维度为2×3×3的数组a,结果如下图所示:a=np.arange(1,10).reshape(3,3)a=np.expand_dims(a,0).repeat(2,0)print(a)原创 2022-01-07 22:04:01 · 23877 阅读 · 2 评论 -
python turtle绘图自定义画布背景颜色
turtle是python一个简单好用的绘图包,它可以通过设计坐标来实时控制绘图。安装很简单,一行命令:pip install turtle 这里只介绍如何设置画布背景颜色。它一般是在绘图的最开始进行设置的,可以使用screensize(width, height, bg)函数,其中的三个参数分别是画布的宽、高、背景颜色。宽高的单位是像素,如果用小数表示,则是以屏幕宽高的百分比来确定大小的。但是如果只设置画布大小,是没法控制窗口的大小的,窗口大小需要使用setup(width, height,原创 2021-12-25 11:23:47 · 19376 阅读 · 0 评论 -
超快速上手jupyter notebook快捷键操作(两种模式一个快捷键)
jupyter notebook是一个web应用程序,用于创建和共享包含代码、可视化和文本的文档。它可以用于数据科学、统计建模、机器学习等领域。我们可以在其上方便地进行python代码编写与运行。jupyter notebook的快捷键有很多,如果不常使用的话,很难记住。但是,其实没有这么困难,熟练使用jupyter notebook,只需记住两种模式,一个快捷键即可!下面将首先介绍如何打开jupyter notebook,然后介绍如何使用。1 打开jupyter notebookanaconda里一般原创 2021-12-24 15:51:21 · 10343 阅读 · 6 评论 -
python使用opencv(cv2)的undistortPoints()/undistort()函数对像素坐标/图像去畸变
1 cv2的安装 python下的opencv叫cv2,但是安装cv2并不是直接pip install cv2,而是:pip install opencv-python 安装完成后,就可以使用啦。2 像素坐标去畸变 对像素坐标去畸变要使用到cv2的undistortPoints()函数,其官方文档点击这里查看。如下图所示: 其中涉及的参数包括:src:图像的像素坐标点集合,类型是np.ndarray,维度可以是N×1×2或者1×N×2dst:输出的去畸变结果,类型是np.ndar原创 2021-12-23 21:12:50 · 25488 阅读 · 3 评论 -
python读取查看npz/npy文件数据及数据完全显示方法
npz和npy文件都可以直接使用numpy读写。import numpy as npac = np.load('Alcatraz Courtyard.npz')ac.files要查看其中某一项的数据:M = ac['M']M显示的值带省略号,要完全显示,执行:np.set_printoptions(threshold=np.inf)M输出有很多很多:查看M的形状大小:M.shape将numpy输出样式修改回去(默认为6):np.set_printoptions(th原创 2021-12-23 10:48:55 · 63330 阅读 · 4 评论 -
圣诞节快到啦,我可以有python圣诞树词云吗?(中英文版及代码)
python中英文版圣诞树词云原创 2021-12-18 12:24:44 · 3320 阅读 · 1 评论 -
从零开始配一个深度学习服务器:固态+机械双硬盘ubuntu系统的安装、分区、配置超详细教程
本教程主要教大家如何从零开始安装配置一个完整的ubuntu系统及深度学习环境搭建,是作者多次实践的结晶,超详细靠谱。该服务器在两块硬盘上只安装ubuntu20.04一个系统,给出了合理的系统内存分配方案。作者的系统配置是:nvidia 3080Ti显卡,显存为12G,电脑内存32G,有两块硬盘,其中SSD大小为512G,机械硬盘大小为4T。最终安装的驱动版本为nvidia-driver-470,cuda版本为11.0,cudnn版本为8.0.5,anaconda版本为2021.11版。...原创 2021-12-05 19:14:40 · 20246 阅读 · 8 评论 -
ubuntu下使用pew管理python虚拟环境
pew(Python Env Wrapper)是一个用于管理python虚拟环境的包,作用类似于anaconda、docker等。它有自己的pip,可以和conda共存,而且不会与conda混淆。也就是,如果你在某个conda环境下激活了某个pew虚拟环境,那么,当你使用pip3安装软件包的时候,是只安装在当前pew环境里的,与conda无关。pew可以直接通过pip3安装:pip3 install pew #安装pew 下面介绍一些常用的pew命令:1. 创建新的虚拟环境pew原创 2021-11-15 21:42:57 · 1717 阅读 · 0 评论 -
vscode对python程序进行调试及运行调试报错error: the following arguments are required: DIR的解决方法
我在python程序中使用了argparse包来进行参数交互,现在要在vscode里面对程序进行调试。在配置好调试器后,还需要设置launch.json配置文件。如果没有的话,原创 2021-11-10 13:29:30 · 9859 阅读 · 3 评论 -
python读取并可视化npy格式的深度图文件以及将其保存为jpg图片的方法
npy文件是无法直接打开的,它里面包含的是一个矩阵格式的数据,可以用于存储图像。为了对其进行可视化,需要将其转换为图像。这里需要用到numpy包以及matplotlib包,没有的话就pip install一下吧。现进入包含有npy文件的目录(我的该目录下有一个名为0000.npy的文件),然后打开一个终端,执行python进入pythn命令行模式,依次输入如下代码即可:import numpy as npimport matplotlib.pyplot as pltdepthmap = np.lo原创 2021-11-07 22:29:27 · 52459 阅读 · 29 评论 -
使用imageio报错‘libfreeimage-3.16.0-linux64.so‘ was not found on your computer的解决方法
https://github.com/imageio/imageio-binaries/tree/master/freeimageimport imageioimageio.core.util.appdata_dir("imageio")原创 2021-10-20 11:07:26 · 4614 阅读 · 1 评论 -
ubuntu安装minieigen库教程
直接百度搜索minieigen的安装,可以找到python中文网的一个链接,里面有一键安装方法,即直接在终端执行pip install minieigen即可。但是,真要是这么一键就能解决的话,那安装这个库就不会让我苦苦摸索好几天了。是的,会出现错误,而且并不好解决。不过,后来偶然看到了一个写的很好的安装这个库的博客,介绍的很详细,可以直接跟着做即可。 之前我没看到这个博客,命令行安装又总是报错,因此,我决定直接从官网下载库的源码然后自己编译。当然,流程也很简单,下面进行介绍。 可以直接从这里下原创 2021-10-19 13:18:20 · 851 阅读 · 0 评论 -
ubuntu安装libboost_python3 / boost_python library教程
现在大家一般使用的都是python3了,而在ubuntu系统下安装某些python库的时候,会需要libboost_python3(boost_python是一个东西,其实都是要编译boost)环境。但是网上相关教程较少,有些也过于复杂,因此这里介绍一个简单靠谱的安装方法。主要的步骤参考的是这篇博客。下面进行详细介绍:首先,将自己的环境切换到python3。然后,去boost官网 https://www.boost.org/ 下载自己想要的boost版本。目前最新的版本是1.77.0,不过我这里下载的是1原创 2021-10-18 20:30:34 · 4006 阅读 · 0 评论