Python
Alex-Leung
Stay hungry,stay foolish.
展开
-
Python计算DICOM图像两点真实距离
使用python测量dicom图像的两像素点之间的真实距离原创 2023-11-23 17:05:24 · 904 阅读 · 2 评论 -
python 3D图像连通区域检测
python 3d连通区域检测原创 2023-04-13 10:55:28 · 1407 阅读 · 0 评论 -
Python使用VTK对容积超声图像进行体绘制(三维重建)
体绘制,也称为三维重建(区别于投影图像的三维重建),直接利用体数据来生成二维图像的绘制技术。与面绘制不同的是体绘制技术不需要提取体数据内部的等值面,它是一个对三维体数据进行采样和合成的过程。体绘制能够通过设置不透明度值来显示体数据内部的不同成分和细节。常用于人体CT图像通过设置不透明度来显示各种器官与组织。总的来说体绘制是包含体数据,而面绘制则是让整个模型由多种多边形构成模型表面,但内部是空的,想要看到模型各个切面的数据还是需要使用体绘制。原创 2023-02-24 18:00:07 · 5828 阅读 · 10 评论 -
Python读取3D PolyData类型的.vtk模型的顶点
【代码】读取3D PolyData类型的.vtk模型的顶点。原创 2023-02-22 10:31:10 · 230 阅读 · 0 评论 -
pydicom提取图片偏绿(光度解释异常)的处理方法
从pydicom直接提取的图像显示偏绿色。原因是光度解释异常,图片存储的颜色空间不是RGB。先从dicom文件的标签(0028, 0004) photometric interpretation读取格式,遇到偏绿的情况是因为该标签的类型为YBR_FULL或者YBR_FULL_422。使用pydicom自带的函数convert_color_space进行色彩空间转换回RGB即可解决这种问题。原创 2022-12-08 10:19:21 · 723 阅读 · 0 评论 -
windows环境下python多进程执行异常处理方式
在实现多进程爬虫的时候,打包为exe后,发现在windows环境下进程异常退出。查看文档后发现在windows环境下要在主函数增加multiprocessing.freeze_support()。原创 2022-09-14 11:28:58 · 640 阅读 · 0 评论 -
selenium两种代理方式(方式二支持账号密码验证)
selenium的代理方式原创 2022-08-24 15:31:25 · 3154 阅读 · 1 评论 -
python opencv关闭摄像头自动白平衡(white balance)
python opencv关闭摄像头自动白平衡原创 2022-08-24 15:38:46 · 2472 阅读 · 0 评论 -
PySide2鼠标点击QLabel并返回基于QLabel的二维坐标
应用场景使用QLabel显示深度摄像头图像,点击图像返回二维坐标,获取对应坐标像素的深度Code1. 重写QLabel子类from PySide2.QtWidgets import QApplication, QWidget, QLabelclass CameraViewer(QLabel): sig = None def setSig(self, sig): self.sig = sig # 鼠标点击事件 def mousePr原创 2022-05-30 18:36:48 · 1190 阅读 · 1 评论 -
python分别作为客户端与服务端使用grpc通信
目录官方python教程前期准备1.了解protobuf2.下载依赖使用教程1. 编写data.proto2. 编写服务端3. 编写客户端4.测试官方python教程https://www.grpc.io/docs/languages/python/quickstart/前期准备1.了解protobuf编写.proto文件,使用对应工具生成目标语言的协议代码官方教程2.下载依赖grpcio为需要使用的依赖,grpcio-tools用来转化.proto文件为.py文件pip inst原创 2021-12-28 17:17:21 · 904 阅读 · 0 评论 -
使用python生成VOC类型数据集样本
voc和coco是常用的数据集,它们有各自的dom结构,本文介绍使用python实现一个voc样本生成类,用于批量将非voc格式样本转化为voc格式Code该类目前适配PaddleDetection VOC格式,部分VOC格式字段有需要可自行添加from xml.dom import minidomclass VOC_Sample_Generator: def __init__(self): self.dom = minidom.Document() .原创 2021-09-23 15:57:15 · 1153 阅读 · 2 评论 -
PySide2在MacOS环境下运行问题合集
问题合集1. 启动界面不显示import platformos.environ['QT_MAC_WANTS_LAYER'] = '1'2. 提示WebEngine相关的提示Qt WebEngine seems to be initialized from a plugin. Please set Qt::AA_ShareOpenGLContexts using QCoreApplication::setAttribute before constructing QGuiApplication.原创 2021-08-31 14:27:47 · 1188 阅读 · 2 评论 -
python调用百度网盘开放平台接口上传本地文件
本文章是为如何在没有GUI的环境下,使用指令行上传文件到百度网盘提供一个思路,其他操作请自行查询官方文档拓展。前期工作申请成为开发者创建应用记录AppKey和SecreKey,后续开发需要使用工作流程用户打开应用授权#mermaid-svg-FIjzM7OIQZO8IRp7 .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;col.原创 2021-08-24 15:45:15 · 4327 阅读 · 9 评论 -
使用传统图像处理获取单目标mask的bbox
Mask原图该图像存在噪声,白色背景为255,灰色为128,黑色部分为0实现效果去燥 + bboxCode依赖库pip install scikit-image opencv-python numpy核心代码import numpy as npimport cv2import PIL.Image as Imagefrom skimage import measure, morphology# 载入原图img = cv2.imread('0001.png')cv2.原创 2021-08-19 15:24:19 · 857 阅读 · 0 评论 -
MICCAI2021 Contest : GAMMA任务一:<基于多模态眼底影像的青光眼分级>官方Baseline代码解释
任务介绍任务一:基于多模态眼底影像的青光眼分级在本任务中,我们的目的是分析2D眼底图像和3D OCT扫描体数据两种模态的临床数据,根据视觉特征将样本分级为无青光眼、早期青光眼、中或晚期青光眼三个类别。网络结构网络的backbone由两个ResNet组成,一个负责提取2D模态图像特征,一个负责提取3D模态图像特征,经过卷积层后,将多维特征压成一维数组,通过concat合并为一个一位数组,最后输出分类结果。更新中…...原创 2021-08-13 11:20:49 · 2881 阅读 · 3 评论 -
PaddleCV官方人体姿态估计预训练模型转ONNX
项目地址https://github.com/PaddlePaddle/models/tree/develop/PaddleCV/human_pose_estimation论文地址Pose ResNet: https://arxiv.org/abs/1804.06208网络结构简单来说,这个网络的backbone使用了ResNet,把分类用的ResNet的最后几层全连接层替换为反卷积层输出heatmap,如果训练集有16个人体关键点,那么最后一层output的channel就是16,分别对原创 2021-07-20 11:35:12 · 1205 阅读 · 0 评论 -
个人常用工具整理(定期更新)
个人收藏整理用文章工具类名称介绍链接netron模型可视化点击打开学术类名称介绍链接papers with code学术论文及其代码地址点击打开原创 2021-07-19 17:17:40 · 396 阅读 · 2 评论 -
MSYS2安装python
指令pacman -S pythonpacman -S python-pip# 用于安装依赖,否则无法buildpacman -S gcc# 不装这个,安装依赖还是会报错pacman -S python-devel原创 2021-07-11 22:15:53 · 5608 阅读 · 0 评论 -
openpyxl查询excel数据方法(持续更新)
目录1. pip安装openpyxl2. 测试excel文件3. Code1. pip安装openpyxlpip install openpyxl2. 测试excel文件Sheet的状态:Sheet1测试数据:3. Codefrom openpyxl import load_workbook# 加载excel文件wb = load_workbook('./test.xlsx')# 选择Sheetws = wb['Sheet1']# 读取A1的值,索引从1开始,非从0开始# 对原创 2021-06-25 11:25:03 · 4416 阅读 · 1 评论 -
医学图像语义分割多分类任务计算mIoU和dice的函数
Code输入:变量简介seg神经网络输出的预测结果gt对应样本的ground truthclasses分类数量,默认为0到classes数值background_id背景在预测结果的Tensor中对应分类的值def cal_mIoU(seg, gt, classes=2, background_id=-1): channel_iou = [] for i in range(classes): if i == backgr原创 2021-06-24 17:32:31 · 3655 阅读 · 5 评论 -
python爬虫下载cityscapes数据集
目录cityscapes数据集下载地址解决的问题爬虫脚本数据集下载获取url获取Cookie里的PHPSESSIDcityscapes数据集下载地址https://www.cityscapes-dataset.com/downloads/解决的问题cityscapes不支持迅雷下载,在下载的时候做了请求头验证,该脚本方便linux环境下用户使用。爬虫脚本该脚本基于该博客的代码进行改进,添加进度条方便观察进度。import requestsimport contextlibimport原创 2021-06-24 11:48:40 · 1828 阅读 · 3 评论 -
np.where在多维数组的应用
函数用途返回查找的参数,在数组中的索引。Code举例:一般卷积神经网络的输入或者输出为一个四维的数组/Tensor。一般为[batch_size, channel, height, width],下面代码目标是输出所有值为0的数字的索引。output = [[ [[1, 0, 2], [2, 1, 0], [1, 0, 0]]]]arr = np.array(output)print(arr.shape)res = np.where(arr==0)print(re原创 2021-06-24 11:28:17 · 3267 阅读 · 0 评论 -
python 8位单通道jpg转8位单通道png脚本
目的PaddleSeg的输入,需要png格式的单通道8位图片输入。将某数据集的8位单通道jpg mask转换为PaddleSeg的输入标准。Codeimport numpy as npimport osimport PIL.Image as Imagepath = './data/ct/Annotations'save_path = './data/ct/Anno_png'for root, dirs, files in os.walk(path): for file in原创 2021-06-15 17:55:01 · 623 阅读 · 3 评论 -
Python PIL保存图片 OSError: cannot write mode P as JPEG
模式说明1 1位像素,黑和白,存成8位的像素L 8位像素,黑白P 8位像素,使用调色板映射到任何其他模式RGB 3×8位像素,真彩RGBA 4×8位像素,真彩+透明通道CMYK 4×8位像素,颜色隔离YCbCr 3×8位像素,彩色视频格式I 32位整型像素F 32位浮点型像素解决方案P模式不能保原创 2021-06-15 14:55:04 · 3528 阅读 · 6 评论 -
自定义csv转VOC目标检测数据集脚本
简介代码是基于其他blog的代码进行修改的,把csv行数据提取独立为一个函数。根据自己的csv文件格式对返回进行调整。功能说明按VOC数据集格式生成对应文件夹,自动在脚本当前目录下生成可设置训练集与验证集比例,随机分配根据上一点分配的比例分别生成all.txt、train.txt和val.txt(分别记录对应图片的文件名,不含尾缀)生成对应Annotations的XML文件csv文件里面多个bbox使用同一张图片,能自动加入到同一个XML的object中Code# encoding=u原创 2021-03-31 15:22:31 · 748 阅读 · 0 评论 -
MS-SSIM图像评估算法Paddle版本复现(完善中)
前置工作原创 2021-03-30 14:32:47 · 640 阅读 · 1 评论 -
python numpy版本SSIM复现与算法解释
目录SSIMMS-SSIMSSIMMS-SSIM原创 2021-03-22 16:26:35 · 5308 阅读 · 4 评论 -
win10环境Pyinstaller打包pyside2为exe问题合集
问题合集问题1. qt.qpa.plugin: Could not find the Qt platform plugin “windows” in “”在import部分下面加入pyside2的plugins\platforms文件夹# ----- 这里是import部分--------# 方法1, 根据组件目录找出plugins\platforms路径dirname = os.path.dirname(PySide2.__file__)plugin_path = os.path.join(d原创 2021-03-12 17:00:38 · 1703 阅读 · 1 评论 -
清华源安装pytorch 1.8.0
解决方法用清华源就行,国内-c pytorch速度太慢了conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/linux-64/原创 2021-03-11 01:37:45 · 5926 阅读 · 0 评论 -
pydicom提取DICOM胸片图像
下载pydicompip install pydicomCodeimport pydicomimport numpy as np# 使用PIL.Image提取出来的图片会很暗from matplotlib import pyplot as pltimport os# dicom文件路径dicom_path = './1.dicom'# png图片提取路径png_path = './png'if __name__ == "__main__": # 读取dicom文件 ds原创 2021-03-08 12:27:06 · 1110 阅读 · 1 评论 -
使用intelrealsense实时计算aruco marker位姿(Python)
目录1.前期准备1.1.硬件设备1.2.在线Aruco Marker生成地址1.3.Aruco Marker信息2.实现2.1.Code2.2.效果问题汇总1.前期准备1.1.硬件设备IntelRealsense D435i1.2.在线Aruco Marker生成地址在线生成地址: https://chev.me/arucogen/1.3.Aruco Marker信息4x4指去掉最外一层黑色,内部图像由4x4个正方形组成2.实现2.1.Codeimport pyrealsen原创 2021-03-01 14:57:49 · 3013 阅读 · 13 评论 -
python socket单线程任务解决recv()超时问题
问题描述Jetson Nano控制深度相机intelrealsense在远端负责远程数据采样,但是由于intelrealsense的pipeline只能被一个线程连接,为了防止远端TCP客户端强制掉电,任务卡在connect.recv(),需要对连接添加一个超时机制,关闭TCP连接。方法使用socket.setdefaulttimeout(time)函数该函数在设置超时的time后,当connect.recv()超过设定时间就会抛出一个timeout异常。通过捕捉异常跳出connect.recv()原创 2021-02-26 10:28:55 · 8127 阅读 · 2 评论 -
python3.x hex、str、bytes转换(完善ing...)
目录1. 常用函数整理hex() - 数字>字符串解释输入&输出bytes() - 字符串>字节流解释输入&输出1. 常用函数整理hex() - 数字>字符串解释将数字转换为十六进制的字符串input >> print(hex(100))output >> 0x64 # type:str输入&输出type参数说明inputnumberint类型数值outputoutput16进制字符原创 2021-02-08 11:38:16 · 6305 阅读 · 0 评论 -
Python2.7+ROS环境:AttributeError:‘module’ has no attribute ‘CALIB_HAND_EYE_TSAI’
问题描述ros环境下提示python2.7环境的opencv没有cv2.CALIB_HAND_EYE_TSAI这个参数,是库引入冲突导致解决方法在报错的文件顶部按下面格式编写import syssys.path.remove('/opt/ros/kinetic/lib/python2.7/dist-packages')import cv2sys.path.append('/opt/ros/kinetic/lib/python2.7/dist-packages')...原创 2021-01-22 13:11:39 · 1750 阅读 · 0 评论 -
Python使用ctypes调用C++(TensorRT)对图片进行预测-字符串传参与返回
问题python服务端需要调用C++实现的TensorRT模块,需要把TensorRT引出一个C接口。C接口接收模型和图片路径,返回包含预测结果的json字符串。环境Ubuntu 16.04Python 3.7C++ 11CUDA 10.2TensorRT 7.1OpenCV 3.4.7TensorRT部分需要注意的点:字符串传输使用char *,不要使用string不需要在.h头文件再次声明包含在extern "C"里的函数cmake编译链接库请使用cuda的# 由于使原创 2021-01-08 10:11:32 · 838 阅读 · 8 评论 -
解决非ROS环境下python包引用错误问题
起因在非ROS环境下python开发,import的包没有使用conda的虚拟环境而是调用了ROS下面的python2.7的包错误信息ImportError: /opt/ros/kinetic/lib/python2.7/dist-packages/cv2.so: undefined symbol: PyCObject_Type解决方法在~/.bashrc下增加如下语句,在使用ROS系统的时候记得注释掉!# 修改成自己对应的路径export PYTHONPATH="/home/john/mi原创 2021-01-04 18:07:54 · 289 阅读 · 0 评论 -
python调用Kinect-V2 rgb与深度图
python调用Kinect-V2 rgb与深度图环境配置PyKinect2 官方仓库PyKinect2 安装/使用问题汇总pip install pykinect2 comtypes numpy pygameCodeKinect必须使用USB 3.0接口from pykinect2 import PyKinectV2from pykinect2 import PyKinectRuntimeimport cv2import numpy as np# 获取深度图, 默认尺寸 42原创 2020-12-18 13:31:24 · 5368 阅读 · 19 评论 -
PyKinect2问题汇总
PyKinect2问题汇总1. PyKinect2运行提示AttributeError: module ‘time’ has no attribute ‘clock’原因:time.clock()在python3.3被移除解决方法:找到本地环境(Lib\site-packages\pykinect2)引入的PyKinectRuntime.py文件,使用3.8版本的python,将里面的.clock()全文替换为.perf_counter()2. File “C:\Users\David\An原创 2020-12-18 09:24:48 · 2405 阅读 · 12 评论 -
无背景png图转mask
无背景png图转mask用途Code测试用途使用单图人体三维重现算法PIFu的时候,重建需要输入一张去背景人像图和mask图,如下所示:去背景人像图mask图Code请安装numba加快运算速度。pip install numba无背景人像图,位深度为32位mask图,位深度为8位import cv2import numbafrom PIL import Image# 带numba加速计算,请安装numba# pip install numba@numba.ji原创 2020-12-17 16:23:55 · 909 阅读 · 4 评论 -
Keras复现CBAM注意力模块
Keras复现CBAM模块1. CBAM注意力机制模块介绍2.模块复现2.1 TensorFlow 2.0 卷积神经网络实战书上的代码(tf与keras混合的代码)2.2 Keras代码复现2.3 测试3. 知识点补充3.1 全局平均/最大池化3.2 Keras构建模型1. CBAM注意力机制模块介绍CBAM(Convolutional Block Attention Module)拥有两个注意力子模块,CAM(Channel Attention Module)和SAM(Spatial Attentio原创 2020-09-23 17:52:04 · 7866 阅读 · 16 评论