自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 收藏
  • 关注

原创 python中SSL/TLS认证失败的解决方案

重装了ubuntu22.04版本的系统后,跑yolov5的train.py脚本时出现以下报错,解决方法:更新certifi,执行以下命令即可。

2023-03-23 18:20:56 758

原创 yolov5txt格式的labels转为coco的json格式

yolov5txt格式的labels转为coco的json格式

2022-10-18 16:20:31 498

原创 目标检测标签文件txt转成xml

目标检测标签文件txt转成xml

2022-10-17 11:10:55 1903 1

原创 cv2读取视频每10帧保存一张图像

cv2读取视频每10帧保存一张图像

2022-10-17 10:05:35 736

原创 图像二维数据拼接成三维

图像二维数据拼接成三维结构

2022-09-26 17:23:14 2136

原创 DICOM文件读取及PNG格式图片展示

DICOM文件读取及PNG格式图片展示

2022-09-26 17:02:30 727

原创 python生成和指定文件目录树一样的目录结构

生成和指定文件目录树一样的目录结构

2022-09-26 16:52:58 426

原创 vs2019生成dll并调用(方式一)

vs2019生成dll并调用

2022-09-06 10:35:27 3951 1

原创 修改txt文件中的路径

修改txt文件中的路径

2022-09-02 10:50:13 382

原创 annotation的.xml文件转yolov5的labels.txt文件

xml转txt文件

2022-09-02 10:40:38 434

原创 根据Main/train_all.txt中的文件名,从labels_all中挑选出训练集的标签文件

根据Main/train_all.txt中的文件名,从labels_all中挑选出训练集的标签文件

2022-09-02 10:35:12 92

原创 在所有的xml文件中根据测试集的文件名,挑选出测试集的xml文件

在所有的xml文件中根据测试集的文件名,挑选出测试集的xml文件

2022-09-02 10:29:43 124

原创 统计目标检测xml文件中每个类别的数量python

统计xml标签中的类别数

2022-09-01 10:31:45 374

原创 使用jupyter notebook运行.py文件

%load xx.py会自动载入整个.py中的代码。%load convertCaffe.py

2021-07-14 13:56:20 968

原创 docker容器和宿主机之间互相拷贝文件

目录从容器拷文件到宿主机从宿主机拷文件到容器从容器拷文件到宿主机在宿主机里面执行以下命令docker cp 容器名:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径 示例: 假设容器名为build_caffe,要从容器里面拷贝的文件路径为:/usr/local/test/Caffe.py, 现在要将Caffe.py从容器里面拷到宿主机的/opt路径下面,那么命令应该怎么写呢?在宿主机上面执行命令 docker cp build_caffe:/usr/local/test/Caffe.

2021-07-12 10:05:32 257

原创 Git基本操作

这里写目录标题git的基本原理git的工作流程git的基本原理Git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository)。如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域。文件在这四个区域之间的转换关系如下:Workspace:工作区,就是你平常存放代码的地方Index/Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表的信息Repository

2021-07-11 15:44:47 111

原创 Git配置

Git配置查看配置文件如何配置安装好git之后,必须要进行用户配置才可以提交程序,那怎么配置呢?在配置用户名和邮箱之前,先来查看一下系统配置文件中的内容。也可直接跳到第二章节输入命令进行配置。查看配置文件查看配置:git config -l,这是我已经完成用户配置的文件。可以看到最后两行是用户信息,但是新电脑上是没有的,需要用户自己配置。查看系统配置:git config --system --list系统配置最后不包括用户配置查看本地配置:git config --global --li

2021-07-11 14:40:56 113

原创 Linux基本命令

访问指定目录:cd: 文件路径回退到上一个目录:cd..显示当前所在路径:pwd列出当前目录下的所有文件:ls或者llls和ll都是列出当前目录中的所有文件,只不过ll列出的内容更为详细。新建一个文件touch $ touch a.js删除一个文件:rm $ rm a.js新建一个文件夹mkdir $ mkdir test删除一个文件夹,$ rm -r test rm -rf / #切勿在Linux中尝试!删除电脑中全部文件移动文件,将.

2021-07-11 14:15:09 99

原创 git安装和启动教程

git安装教程下载安装卸载启动下载下载地址:https://git-scm.com/downloads根据自己电脑的系统选择下载,如果下载速度很慢,可以选择镜像下载,这里推荐使用淘宝镜像下载:http://npm.taobao.org/mirrors/git-for-windows/。拉倒页面最下端,找到最新版本,我选择的是最后一个版本,如果是windows则选择.exe的文件,linux则选择tar.bz2即可安装下载完成后,进行安装。安装过程中出现默认编辑器的选择,选择自己喜欢的编辑器

2021-07-11 13:34:35 995

原创 docker零基础教程1

docker常用操作创建镜像和容器删除容器安装完docker之后,我们就来试一试怎么使用。创建镜像和容器获取镜像(images)如果本地没有ubuntu18.04镜像,我们可以使用docker pull命令来载入:$ docker pull ubuntu:18.04启动容器(contains)$ docker run -it ubuntu:18.04 /bin/bash可以看见本次启动的容器ID为158e7626a58b,这里需要注意,每次运行启动容器的命令都会创建一个新的容器,每个新

2021-07-06 15:30:50 136

原创 Ubuntu20.04环境下安装opencv3.4.2

Ubuntu20.04环境下安装opencv3.4.2欢迎使用Markdown编辑器新的改变合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片opencv的下载链接:http://opencv.org/releases.html进去之后选择sources,下载到你需要的文件夹中,文件名为opencv-3.4.2.zip直接右击.zip文件,选择extract here对文件进行解压,解压后的文件会保存在当前位置。进入解压后的文件路径opencv-3.4.2下,执行以下步骤:cd D

2021-07-02 13:54:15 1109

原创 如何在pdf中加入手写签名

目录1.手写签名2. 抠字符3. 插入签名1.手写签名在白纸上写下需要的签名,然后用手机拍下来,再用扫描全能王将图片进行扫描,得到白底黑字的图像。2. 抠字符将第一步得到的图像中的字符部分抠出来,背景部分设置为透明的,此时得到.png格式的签名图像。抠图方法的脚本如下:#!_*_coding:utf-8_*_#__author__:"david.z"#首先用pip命令安装模块,pip install opencv-pythonimport cv2image = cv2.imread(r

2021-06-14 16:22:48 9006 2

原创 windows系统下jupyter notebook切换到虚拟环境的方法

该方法简洁明了,不需要在虚拟环境中再重复安装jupyter notebook!只需要安装ipykernel,并将环境添加到Jyputer中操作方法如下:conda activate xx (xx表示切换到的虚拟环境的名称)conda install ipykernel (安装必要插件)python -m ipykernel install --name xx (将虚拟环境添加到Jyputer中(Name是此环境显示在Jyputer中的名称,可自定义)就可以了!开始愉快的敲代码吧!...

2021-05-12 15:25:36 150

原创 win10没有C:\Program Files\NVIDIA Corporation\NVSMI该如何查看显卡占用

网上都说要找到C:\Program Files\NVIDIA Corporation\NVSMI才能查看,但是我的文件夹下真的没有这个路径,该怎么办呢?其实win10系统高版本显卡驱动是不需要使用nvidia-smi.exe文件的,想要查看显卡占用率可以直接在命令行窗口输入:注意-smi左边没有空格nvidia-smi然后回车即可。...

2021-04-26 16:29:19 5127 7

原创 Python中os.sep解决路径分隔符问题

最近在windows上跑ubuntu的代码发现了路径分隔符错乱的问题。在Windows上,文件的路径分隔符是’’,在Linux上是’/’。为了让代码在不同的平台上都能运行,那么路径应该写’‘还是’/‘呢?使用os.sep的话,就不用考虑这个了,os.sep根据你所处的平台,自动采用相应的分隔符。即:将所有的’‘或者’/'都采用os.sep来代替!举例Linux系统某个路径,/usr/share/python,那么上面的os.sep就是‘/’windows系统某个路径,C:\Users\Publi

2021-04-26 16:19:52 1522

原创 Canny边缘检测及其opencv实现

目录原理opencv实现原理Canny边缘检测算法由四个步骤构成,分别为:去噪采用高斯滤波器去除噪声。计算图像梯度对平滑后的图像使用sobel算子计算水平方向和竖直方向的一阶导数非极大值抑制获得梯度的方向和大小之后,对每一个像素进行检查,看这个点的梯度是不是周围具有相同梯度方向的点中最大的。阈值筛选要确定真正的边界,需要设置两个阈值:minVal和maxVal。当图像的灰度梯度高于maxVal时被认为是真正的边界,低于minVal的边界会被抛弃。如果介于两者之间,就看该

2021-04-12 21:08:45 175

原创 Laplace(拉普拉斯)算子

目录原理原理Laplace算子作为边缘检测之一,和Sobel算子一样也是工程数学中常用的一种积分变换,属于空间锐化滤波操作。拉普拉斯算子(Laplace Operator)是n维欧几里德空间中的一个二阶微分算子,定义为梯度(▽f)的散度(▽·f)。拉普拉斯算子是二阶微分线性算子,在图像边缘处理中,二阶微分的边缘定位能力更强,锐化效果更好,因此在进行图像边缘处理时,直接采用二阶微分算子而不使用一阶微分。图1 一阶微分和二阶微分计算图离散函数的导数退化成了差分,一维一阶差分公式和二阶差分公式分别为:

2021-04-08 11:21:49 17710 2

原创 礼帽和黑帽及opencv实现

目录1 原理1.1 礼帽运算1.2 黑帽运算2 opencv 实现2.1 礼帽运算2.2 黑帽运算1 原理1.1 礼帽运算原图像与“开运算”的结果图之差。开运算会将图像的裂缝放大,因此,从原图中减去开运算后的图,得到的效果图突出了比原图轮廓周围的区域更明亮的区域。当一幅图像具有大幅的背景,且微小物体比较有规律的情况下,可以使用礼帽运算进行背景提取。1.2 黑帽运算“闭运算”的结果图与原图像之差。黑帽运算用于分离比邻近点暗一些的斑块。2 opencv 实现2.1 礼帽运算top = cv

2021-04-07 15:43:22 258

原创 开运算和闭运算及opencv实现

目录1 原理1.1 开运算1.2 闭运算2 opencv实现2.1 开运算2.2 闭运算1 原理1.1 开运算开运算是先腐蚀后膨胀,作用是分离物体,消除小区域。特点:消除噪点,去除小的干扰块,而不影响原来的图像。1.2 闭运算闭运算与开运算相反,是先膨胀后腐蚀,作用是消除“闭合”物体里面的孔洞。特点:可以填充闭合区域。2 opencv实现2.1 开运算import numpy as npimport cv2 as cvimport matplotlib.pyplot as plt

2021-04-07 15:13:00 519 2

原创 图像的膨胀和腐蚀原理及opencv实现

目录1 膨胀和腐蚀介绍1.1 膨胀1.2 腐蚀1 膨胀和腐蚀介绍腐蚀和膨胀是形态学最基本的操作,都是针对白色部分(高亮部分)而言的。膨胀就是使图像中高亮部分扩张,得到比原图更大的高亮区域;腐蚀是原图像中的高亮区域被蚕食,得到比原图更小的高亮区域。膨胀是求结构元素下像素最大值,腐蚀是求结构元素下像素最小值。1.1 膨胀具体操作:用一个结构元素扫描图像中的每一个像素,看结构元素覆盖下的原图的像素(二值图像只有0和1)的最大值是多少,若最大值是1,则该点像素为1;若最大值是0,则该点像素是0。例子如

2021-04-07 12:50:33 5196

原创 Dataloader和Dataset

Epoch:所有训练样本都已输入到模型中,称为一个EpochIteration:一批样本输入到模型中,称之为一个IterationBatchsize:批大小,决定一个Epoch有多少个Iteration举例:样本总数:80,Batchsize:81Epoch = 10 Iteration样本总数:87,Batchsize:81Epoch = 10 Iteration?drop_last = True1Epoch = 11 Iteration?drop_last = FalseDatalod

2020-07-31 17:36:48 180

原创 DarkNet-YOLOv3训练自己的数据集(二)(过程超详细!!!)

上一篇讲了制作数据集和重新聚类anchor,接下来讲如何训练模型一、修改Makefile文件将GPU、CUDNN改为1,因为我没有检测视频,所以OPENCV没有改,如果需要的话可以改为1。修改完后保存并执行以下命令重新编译make二、编译成功后,修改cfg/voc.data文件,classes改为自己的类别数,路径也改为自己的,最后两个可以不动。三、 修改data/voc.names和coco.names。改成自己的类别名称即可四、 修改cfg/yolov3-voc.cfg,搜索y

2020-07-31 10:09:26 696

原创 DarkNet-YOLOv3训练自己的数据集(一)(过程超详细!!!)

本文是为了记录在公司实习的第一个手势识别的项目。该项目数据集采用的是私有的手势照片,从1-10共十个类别,用手势对相机进行控制。除了重新聚类anchor以外,其余相关工作全部在ubuntu上完成,后面具体实验步骤中会提到。一、按照官网的步骤下载并编译darknet直接clone darknetgit clone https://github.com/pjreddie/darknet切换到darknet文件夹下,再编译,编译过程中会产生很多信息,只要没有error就可以了。cd dar

2020-07-30 17:56:14 1785

原创 ubuntu返回当前路径上一级的命令

cd …/ 返回上一级目录cd …/… 返回上两级目录cd或cd ~ 返回到home目录

2020-07-30 16:27:53 11120 3

原创 表情识别项目记录(三)

使用face_recognition模块来识别人脸image = face_recognition.load_image_file('图片路径')face_locations = face_recognition.face_locations(image)#[(a,b,c,d)]list里面的元素是turple(a,b,c,d)= face_locations[0]print(a,b,c,d)image_spilt = image[a:c,d:b,:]# 如果直接显示,则颜色与原图不符cv2.

2020-06-17 16:29:25 161

原创 查准率(Precision),灵敏性(Sensitivity),特异性(Specificity),F1,PR曲线,ROC,AUC

先来了解一下TP、FP、FN、TN的概念,可以帮助后面理解 真实情况 预测结果 P N P TP FN N FP TN 先说个结论:Recall = Sensitivity = TPR查全率(Recall)分类器认为是正类并且确实是正类的部分占所有确实是正类的比

2020-06-16 12:05:12 7371 3

原创 opencv读取图片属性和打开电脑摄像头

读取图片属性def get_image_info(image): print(type(image)) print(image.shape) print(image.size)#shape各个维度相乘 print(image.dtype) pixel_data = np.array(image) print(pixel_data)打开电脑摄像头def video_demo(): capture = cv.VideoCapture(0)

2020-06-10 20:57:24 220

原创 autograd-自动求导系统

torch.autograd权值的更新需要求解梯度,pytorch提供了自动求导系统,我们只需要搭建前向传播计算图,由autograd的方法就可以得到所有张量的梯度。其中最常用的方法是backwardtorch.autograd.backward()功能:自动求取各个节点的梯度tensors: 用于求导的张量,如 lossretain_graph :保存计算图(由于pytorch采用动态图机制,在每一次反向传播之后计算图都会被释放,如果后面还需要使用计算图,该参数需要为True)creat

2020-06-06 15:27:04 236

原创 pytorch学习笔记二:张量操作

一、张量拼接与切分1.1 torch.cat()功能:将张量按维度dim进行拼接tensor:张量序列dim:要拼接的维度举例:t = torch.ones(2,3)t_0 = torch.cat([t,t],dim=0)t_1 = torch.cat([t,t,t],dim=1)print('t_0:{} shape:{}\nt_1:{} shape:{}'.format(t_0,t_0.shape,t_1,t_1.shape))结果:t_0:tensor([[1., 1.,

2020-06-05 15:08:47 246

原创 pytorch学习笔记一:张量的创建

一、直接创建1.1 通过torch.tensor创建张量 torch.tensor( data,dtype=None, device=None, requires_grad=False, pin_memory=False)data:数据,可以是list,numpydtype:数据类型,默认与data一致device:所在设备,cuda/cpurequires_grad:是否需要梯度pin_memory:是否存于锁页内存举例:

2020-06-04 20:49:58 364

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除