自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 资源 (1)
  • 收藏
  • 关注

原创 PaddleLabel格式的数据批量处理

PaddleLabel格式的数据批量处理import osimport jsondef json_2_icdar(js_path, ic_path): with open(js_path, 'r', encoding='utf-8') as f: with open(ic_path, 'w', encoding='utf-8') as f1: for line in f.readlines(): content = li

2021-10-28 16:42:08 733

原创 PPOCRLabel标注识别图片自动裁剪

paddleocr自定义数据集标注图片,识别部分的图片自动裁剪的python代码。import osfrom PIL import Imageimport jsonlist01 = []with open("Label.txt", 'r', encoding="utf-8") as f: data = f.readlines() for item in data: pic_name = item.strip().split("\t")[0].split("/")[

2021-10-11 17:32:18 637

原创 PPOCRLabel标注格式转icdar15格式

PPOCRLabel标注格式转icdar15格式的python代码import osimport jsondef json_2_icdar(js_path, ic_path): with open(js_path, 'r', encoding='utf-8') as f: for line in f.readlines(): print(line) content = line.split('\t') p

2021-10-11 17:29:15 243

原创 OCR训练时,将txt文件和图片数据转为lmdb格式

create_lmdb_dataset.py""" a modified version of CRNN torch repository https://github.com/bgshih/crnn/blob/master/tool/create_dataset.py """import fireimport osimport lmdbimport cv2import numpy as npdef checkImageIsValid(imageBin): if imageBi

2021-10-02 15:13:02 455

原创 科研训练2——搭建tensorflow环境

文章目录1. 配置环境1.1 配置镜像源1.2 创建新环境1.3 进入该环境1.4 安装相关包1.5 运行代码2. 其他操作2.1 查看所有环境2.2 创建环境2.3 进入环境2.4 退出环境2.5 查看当前环境python版本2.6 删除paddle-env环境1. 配置环境1.1 配置镜像源需要注意的是,pip中下载安装比较慢,可以换个清华镜像源。到用户文件夹下,创建一个pip文件夹,然后在pip文件夹里创建一个txt文件。修改txt文件的内容,并且把后缀改成ini。[global]in

2021-09-01 07:46:56 1121

原创 科研训练1——tensorflow安装教程

文章目录1. Anaconda安装1.1 下载安装包1.2 安装1.3 使用Anaconda2. Pycharm安装2.1 下载安装包2.2 安装2.3 使用Pycharm1. Anaconda安装1.1 下载安装包在网上搜索Anaconda的官网:https://www.anaconda.com/distribution/百度网盘连接如下:链接:https://pan.baidu.com/s/1gv9M0XuSRF1iZOzNhCriug提取码:bgcq1.2 安装下载完成后打开。最好

2021-09-01 07:44:00 639

原创 const关键字分析

目录C语言中修饰变量C语言中修饰指针变量C语言中修饰函数的参数C语言中修饰函数的返回值C++中修饰变量C++中修饰函数的参数C++中修饰函数的返回值C++中修饰类的成员函数C++中修饰类的成员变量C语言中修饰变量在C语言中,被const修饰的是一个不能被修改的变量。C语言中修饰指针变量#include <stdio.h>//代码1void test1(){ int n = 10; int m = 20; int *p = &n; *p = 20;//ok p =

2021-08-28 23:30:37 81

原创 static关键字分析

目录C语言中修饰局部变量-静态局部变量C语言中修饰全局变量-静态全局变量C语言中修饰函数-静态函数C++中修饰局部变量C++中修饰全局变量C++中修饰成员变量C++中修饰成员函数C语言中修饰局部变量-静态局部变量对比代码1和代码2的效果理解static修饰局部变量的意义。//代码1#include <stdio.h>void test(){ int i = 0; i++; printf("%d ", i);}int main(){ int i = 0; for (i

2021-08-24 10:45:30 83

原创 将txt转换成xml的代码

yolov3将检测出的目标坐标并保存到本地。import os,shutilimport cv2from lxml.etree import Element, SubElement, tostringdef txt_xml(img_path, img_name, txt_path, img_txt, xml_path, img_xml): #读取txt的信息 clas=[] img=cv2.imread(os.path.join(img_path,img_name))

2021-03-19 17:24:05 522

原创 批量去雾的代码

import osfrom PIL import Imageimport numpy as npdef haze_removal(image, windowSize=24, w0=0.6, t0=0.1): darkImage = image.min(axis=2) maxDarkChannel = darkImage.max() darkImage = darkImage.astype(np.double) t = 1 - w0 * (darkImage / ma

2021-03-18 20:44:11 237

原创 Github删除文件夹

在github上只能删除仓库,却无法删除文件夹或文件, 所以只能通过命令来解决。首先进入你的master文件夹下, Git Bash Here ,打开命令窗口。$ git --help # 帮助命令$ git pull origin master # 将远程仓库里面的项目拉下来$ dir # 查看

2021-03-11 09:03:57 145

原创 批量检测图片通道数的代码

python代码检测图片是png还是jpg格式。png格式的图片为4通道,jpg格式的图片为3通道。import osfrom PIL import Image#图片文件夹路径path = 'JPEGImages/'for file in os.listdir(path): pic_file = path + file img = Image.open(pic_file) print("file : %s , pass_count : %s" % (file, le

2021-03-06 22:14:26 378 2

原创 【Linux】网络基础知识(三)—— 传输层 —— UDP协议详解

文章目录传输层1. 再谈端口号1.1 端口号范围划分1.2 认识知名端口号1.3 netstat1.4 pidof2. UDP协议2.1 UDP协议端格式2.2 UDP的特点2.3 面向数据报2.4 UDP的缓冲区2.5 UDP使用注意事项2.6 基于UDP的应用层协议传输层负责数据能够从发送端传输接收端。1. 再谈端口号端口号(Port)标识了一个主机上进行通信的不同的应用程序。在TCP/IP协议中, 用 “源IP”, “源端口号”, “目的IP”, “目的端口号”, “协议号” 这样一个五元

2021-01-04 09:53:13 279

原创 pip的安装、更新、降级&安装包的管理

文章目录1. 安装pip2. 更新 pip3. pip 版本降级4. 安装包5. 安装指定版本的包6. 升级包7. 卸载包8. 列出已安装的包9. 查询可升级的包1. 安装pippython get-pip.py -i https://pypi.tuna.tsinghua.edu.cn/simple2. 更新 pippip install --upgrade pip或者python -m pip install --upgrade pip3. pip 版本降级python -m pip

2020-12-30 09:30:10 2316 1

原创 【Linux】网络基础知识(二)—— 应用层 —— HTTP协议详解

文章目录应用层1. 再谈 "协议"1.1 自定制协议2. HTTP协议2.1 认识URL2.2 urlencode和urldecode2.3 HTTP协议格式2.3.1 HTTP请求2.3.2 HTTP响应2.4 HTTP常见Header2.5 HTTP的方法2.6 HTTP的状态码3. 实现简单的HTTP服务器4. 测试不同的状态码应用层我们程序员写的一个个解决我们实际问题,满足我们日常需求的网络程序,都是在应用层。1. 再谈 “协议”协议是一种 “约定”,socket api的接口,在读写数据时

2020-12-28 11:01:00 365

原创 【Linux】网络编程套接字(二)—— TCP编程

文章目录1. TCP协议通信流程1.1 初始化1.2 建立连接 —— 三次握手1.3 数据传输1.4 关闭连接 —— 四次挥手2. 简单的TCP网络程序2.1 TCP的socket API详解2.1.1 监听2.1.2 获取连接2.1.3 建立连接2.1.4 发送数据2.1.5 接收数据2.2 客户端程序2.3 服务端程序2.4 测试多个连接的情况3. TCP多进程版本4. TCP多线程版本1. TCP协议通信流程1.1 初始化服务器:调用socket, 创建文件描述符;调用bind, 将当前

2020-12-26 21:24:20 386 3

原创 【Linux】网络编程套接字(一)—— UDP编程

文章目录1. 预备知识1.1 源IP地址和目的IP地址1.2 认识端口号1.3 理解 "端口号" 和 "进程ID"1.4 源端口号和目的端口号1.5 认识UDP协议1.6 认识TCP协议1.7 网络字节序2. socket编程接口2.1 socket 常见API2.1.1 创建2.1.2 绑定2.1.3 关闭2.2 sockaddr结构2.2.1 sockaddr 结构2.2.2 sockaddr_in 结构2.2.3 in_addr 结构2.2.4 小结2.3 地址转换函数2.4 例子3. 简单的UDP网

2020-12-26 21:21:57 2364 2

原创 机器学习(三)—— 配置环境tensorflow-gpu

文章目录1. 配置环境1.1 配置镜像源1.2 创建新环境1.3 进入该环境1.4 安装相关包1.5 运行代码1. 配置环境1.1 配置镜像源需要注意的是,pip中下载安装比较慢,可以换个清华镜像源。到用户文件夹下,创建一个pip文件夹,然后在pip文件夹里创建一个txt文件。修改txt文件的内容,并且把后缀改成ini。[global]index-url = https://pypi.tuna.tsinghua.edu.cn/simple1.2 创建新环境Win+R启动cmd,在命令

2020-12-25 16:29:02 419 1

原创 机器学习(二)—— 配置环境yolo-cpu

文章目录1. 配置环境1.1 配置镜像源1.2 创建新环境1.3 进入该环境1.4 安装相关包1.5 运行代码1. 配置环境1.1 配置镜像源需要注意的是,pip中下载安装比较慢,可以换个清华镜像源。到用户文件夹下,创建一个pip文件夹,然后在pip文件夹里创建一个txt文件。修改txt文件的内容,并且把后缀改成ini。[global]index-url = https://pypi.tuna.tsinghua.edu.cn/simple1.2 创建新环境Win+R启动cmd,在命令

2020-12-25 14:43:50 1042 3

原创 机器学习(一)—— 安装教程

文章目录1. Anaconda安装1.1 下载安装包1.2 安装1.3 使用Anaconda2. Pycharm安装2.1 下载安装包2.2 安装2.3 使用Pycharm1. Anaconda安装1.1 下载安装包在网上搜索Anaconda的官网:https://www.anaconda.com/distribution/百度网盘连接如下:链接:https://pan.baidu.com/s/1gv9M0XuSRF1iZOzNhCriug提取码:bgcq1.2 安装下载完成后打开。最好

2020-12-25 11:32:14 683 3

原创 【C++】多态介绍

文章目录0. 前言1. 多态的概念2. 多态的定义及实现2.1 多态的构成条件2.2 虚函数2.3 虚函数的重写2.4 override 和 final关键字2.5 重载、覆盖(重写)、隐藏(重定义)的对比3. 抽象类3.1 概念3.2 接口继承和实现继承4. 多态的原理4.1 虚函数表4.2 多态的原理4.3 动态绑定与静态绑定5. 单继承和多继承关系中的虚函数表5.1 单继承中的虚函数表5.2 多继承中的虚函数表0. 前言需要声明的,本博客中的代码及解释都是在vs2013下的x86程序中,涉及的

2020-12-23 14:27:39 84

原创 【C++】继承介绍

文章目录0. 前言1. 继承的概念及定义1.1继承的概念1.2 继承的定义1.2.1 定义格式1.2.2 继承关系和访问限定符1.2.3 继承基类成员访问方式的变化1.3 总结2. 基类和派生类对象赋值转换3. 继承中的作用域4. 派生类的默认成员函数5. 继承与友元6. 继承与静态成员7. 菱形继承7.1 单继承7.2 多继承7.3 菱形继承8. 菱形虚拟继承8.1 虚拟继承可以解决菱形继承的二义性和数据冗余的问题8.2 虚拟继承解决数据冗余和二义性的原理9. 继承和组合0. 前言需要声明的,本博客中

2020-12-22 14:24:58 71

原创 【Linux】网络基础知识(一)—— 网络初识

文章目录1. 计算机网络背景1.1 网络发展1.2 认识 "协议"2. 网络协议初识2.1 OSI七层模型2.2 TCP/IP五层(或四层)模型3. 网络传输基本流程3.1 网络传输流程图3.2 数据包封装和分用3.2.1 数据封装的过程3.2.2 数据分用的过程4. 网络中的地址管理4.1 认识IP地址4.2 认识MAC地址1. 计算机网络背景1.1 网络发展独立模式: 计算机之间相互独立;网络互联: 多台计算机连接在一起, 完成数据共享;局域网LAN: 计算机数量更多了, 通过交换机和路由

2020-12-21 16:09:30 224

原创 【Linux】多线程深度剖析(二)

文章目录1. 死锁1.1 死锁的概念1.2 死锁四个必要条件1.3 避免死锁1.4 简单案例2. 生产者消费者模型2.1 三二一原则2.2 为何要使用生产者消费者模型2.3 生产者消费者模型优点2.4 基于BlockingQueue的生产者消费者模型2.5 C++ queue模拟阻塞队列的生产消费模型3. POSIX信号量3.1 信号量的接口3.1.1 初始化信号量3.1.2 销毁信号量3.1.3 等待信号量3.1.4 唤醒信号量3.2 基于环形队列的生产消费模型3.3 用信号量进行多线程间的同步过程4.

2020-12-20 19:35:00 136

原创 【Linux】多线程深度剖析(一)

文章目录1. 线程概念1.1 什么是线程1.2 线程的优点1.3 线程的缺点1.4 线程异常1.5 线程用途2. 进程VS线程2.1 进程和线程2.2 进程的多个线程共享3. 线程控制3.1 POSIX线程库3.2 创建线程3.3 线程ID及进程地址空间布局3.4 线程终止3.5 线程等待3.6 分离线程3.7 简单案例4. 线程互斥(线程安全)4.1 进程线程间的互斥相关概念4.2 互斥量(互斥锁)mutex4.3 互斥量的接口4.3.1 初始化互斥量4.3.2 销毁互斥量4.3.3 互斥量加锁和解锁4.

2020-12-20 19:33:20 178

原创 【C++】IO流介绍

文章目录1. C语言的输入与输出2. 流是什么3. C++IO流3.1 C++标准IO流3.2 C++文件IO流4. stringstream的简单介绍1. C语言的输入与输出C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()。 scanf(): 从标准输入设备(键盘)读取数据,并将值存放在变量中。printf(): 将指定的文字/字符串输出到标准输出设备(屏幕)。注意宽度输出和精度输出控制。C语言借助了相应的缓冲区来进行输入与输出。对输入输出缓冲区的理解:可以屏蔽掉低级

2020-12-18 10:10:41 216

原创 【C++】模板分析(二)

文章目录1. 非类型模板参数2. 类模板的特化2.1 概念2.2 函数模板特化2.3 类模板特化2.3.1 全特化2.3.2 偏特化3. 模板的分离编译3.1 什么是分离编译3.2 模板的分离编译3.3 解决方法4. 模板总结1. 非类型模板参数模板参数分类类型形参与非类型形参。类型形参即:出现在模板参数列表中,跟在class或者typename之类的参数类型名称。非类型形参,就是用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可将该参数当成常量来使用。namespace bite{

2020-12-18 10:09:06 53

原创 【Linux】进程信号介绍

1. Linux信号的基本概念1.1 生活角度的信号1.2 技术应用角度的信号用户输入命令,在Shell下启动一个前台进程。用户按下 Ctrl-C ,这个键盘输入产生一个硬件中断,被OS获取,解释成信号,发送给目标前台进程。前台进程因为收到信号,进而引起进程退出。1.3 注意Ctrl-C 产生的信号只能发给前台进程。一个命令后面加个&可以放到后台运行,这样Shell不必等待进程结束就可以接受新的命令,启动新的进程。Shell可以同时运行一个前台进程和任意多个后台进程,只有前台进

2020-12-07 22:43:30 152

原创 【STL】适配器:stack、queue和priority_queue的介绍和模拟实现

1. stack的介绍和使用1.1 stack的介绍2. queue的介绍和使用3. priority_queue的介绍和使用4. 容器适配器

2020-11-24 22:55:08 259

原创 【STL】容器:list的介绍和模拟实现

1. list的介绍及使用1.1 list的介绍list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高效。与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效

2020-11-20 15:18:41 99

原创 【STL】容器:vector的介绍和模拟实现

1. vector的介绍及使用1.1 vector的介绍vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间。其做法是,分配一个新的数组,然后将全部元素移到这个数组。就时间而言,这是一个相对代价高的任

2020-11-18 21:53:04 124 2

原创 【STL】容器:string类的介绍和模拟实现

1. 标准库中的string类1.1 string类字符串是表示字符序列的类。标准的字符串类提供了对此类对象的支持,其接口类似于标准字符容器的接口,但添加了专门用于操作单字节字符字符串的设计特性。string类是使用char作为它的字符类型,使用它的默认char_traits和分配器类型。string类是basic_string模板类的一个实例,它使用char来实例化basic_string模板类,并用char_traits和allocator作为basic_string的默认参数。注意,这个

2020-11-16 22:47:41 1100 1

原创 【C++】模板分析(一)

1. 泛型编程如何实现一个通用的交换函数呢?void Swap(int& left, int& right){ int temp = left; left = right; right = temp;}void Swap(double& left, double& right){ double temp = left; left = right; right = temp;}void Swap(char& left, char& r

2020-10-29 17:22:24 69 1

原创 【Linux】进程间通信介绍

1. 进程间通信介绍1.1 进程间通信目的数据传输:一个进程需要将它的数据发送给另一个进程。资源共享:多个进程之间共享同样的资源。通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。1.2 进程间通信发展管道System V进程间通信POSIX进程间通信1.3 进程间通信分类

2020-10-23 17:48:49 301 1

原创 【C++】C/C++的内存管理方式

1. C/C++内存分布int globalVar = 1;static int staticGlobalVar = 1;void Test(){ static int staticVar = 1; int localVar = 1; int num1[10] = { 1, 2, 3, 4 }; char char2[] = "abcd"; char* pChar3 = "abcd"; int* ptr1 = (int*)malloc(sizeof (int)* 4); int* pt

2020-10-20 21:26:39 352

原创 【Linux】基础IO介绍

1.回顾C文件接口hello.c写文件#include <stdio.h>#include <string.h>int main(){ FILE *fp = fopen("myfile", "w"); if (!fp){ printf("fopen error!\n"); } const char *msg = "hello bit!\n"; int count = 5; while (count--){ fwrite(msg, strlen(msg),

2020-10-14 13:41:31 1326 2

原创 【C++】类与对象(三)—— 类的新玩法

1. 再谈构造函数1.1 构造函数体赋值在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。class Date{public: Date(int year, int month, int day) { _year = year; _month = month; _day = day; }private: int _year; int _month; int _day;};虽然上述构造函数调用之后,对象中已经有了一个初始值,但是不能将其称作为

2020-10-09 17:51:28 148

原创 【C++】类与对象(二)—— 类的默认成员函数

1. 类的6个默认成员函数如果一个类中什么成员都没有,简称为空类。空类中什么都没有吗?并不是的,任何一个类在我们不写的情况下,都会自动生成下面6个默认成员函数。2. 构造函数概念class Date{public: void SetDate(int year, int month, int day) { _year = year; _month = month; _day = day; } void Display() { cout << _year

2020-09-14 22:31:35 407

原创 【C++】类与对象(一)—— 类的引入

1. 类的定义class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号。类中的元素称为类的成员:类中的数据称为类的属性或者成员变量; 类中的函数称为类的方法或者成员函数。class className{ // 类体:由成员函数和成员变量组成}; // 一定要注意后面的分号类的两种定义方式:声明和定义全部放在类体中,需要注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。声明放在.h文件中,类的定义放在.cpp文件中。一

2020-09-02 21:22:58 380

原创 【Linux】进程概念与进程控制

一、进程1.基本概念课本概念:程序的一个执行实例,正在执行的程序等;内核观点:担当分配系统资源(CPU时间,内存)的实体。2.描述进程-PCB进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合。课本上称之为PCB(process control block),Linux操作系统下的PCB是: task_structtask_struct-PCB的一种在Linux中描述进程的结构体叫做task_structtask_struct是Linux内核的一种数据结构,它会被

2020-08-19 19:52:41 193

yolo-cpu测试代码

深度学习yolo-cpu测试代码

2020-12-31

空空如也

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

TA关注的人

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