- 博客(73)
- 收藏
- 关注
原创 opencv-python: 输出视频——正确设置分辨率
当我们使用opencv-python利用图像生成视频时,通常需要cv2.VideoWriter()命令,比如下面给出一个具体例子“”“下面程序是将img_in_dir目录下的100帧图像转成视频video.mp4”“”import osimport cv2import numpy as npdef visualize(img_in_dir, video_out_path): fourcc = cv2.VideoWriter_fourcc(*'mp4v') out = cv2.
2020-09-22 15:32:21
2898
原创 Numpy:矩阵拼接
矩阵拼接方法:np.append(arr,values,axis)np.concatenate(arrays,axis,out=None)np.stack(arrays,axis,out=None)np.hstack/vstack(tup)下面具体举例,注意输入和输出维度的关系。1. np.append(arr,values,axis)支持数组和数组或数组和数的拼接,不支持三个及以上数组的拼接,axis默认值为None# 两个(3,4)维度的数组a = np.array([ [
2020-09-19 20:02:12
19188
原创 Python:跨文件夹模块调用中的路径问题
本文介绍Python中跨文件夹调用时,产生的相对路径问题和模块搜索路径问题。1. 相对路径问题 假定我们的文件结构如下:myExperiments -> test_1 -> test_1.py -> img.jpg -> test_2 -> test_2.py 并且test_1.py中有如下函数,即读取img.jpg文件并返回其是否为None(为None表示读取失败):import cv2def read_image(): img = cv
2020-07-19 15:48:53
4984
原创 PyQt5:pyinstaller发布过程中的一些问题
问题:当我们使用PyQt5编写好界面程序后,需要发布该程序,使其成为可执行文件,此时我们可以借用pyinstaller来完成,本文记述这个过程中笔者所遇到的一些问题,希望能对他人有一定的借鉴意义。 1、程序发布 这里,我有一个使用QtDesigner设计的.ui文件(myMainWindow.ui)和一个在此基础上进行逻辑设计的.py文件(mainWindow.py),在.py文件中使用“uic.loadUi()”来对.ui文件动态调用;另外,界面程序中使用的图片文件在“icon/”文件夹中。如下
2020-05-22 11:28:33
1153
原创 Word:论文排版专题——表格跨页续表
当文档中表格较长时,会容易产生跨页现象。这时为了使格式间接清晰,需要对第二页的表格加入同样的表头和题注。*注:本文使用的是Word2016,不建议使用WPS1. 原始表格 假设我们的情况如下图,表1产生了跨页2. 重复标题行 首先,为了使得表格美观,一般在第二页进行重复标题行处理。方法是选中第一行(标题行),然后在“表格布局”中点击“重复标题行”即可。可以看到,在第二页中的表格也增添了“A-B-C-D”的标题行。3. 添加“续表”题注 这里我们希望为第二页的表格也添加题注”续表1 实验结
2020-05-12 19:51:13
204594
25
原创 Word:论文排版专题——多级列表与插入题注
本文介绍word中多级标题的设置,以及如何插入含章节号的题注(Word2016)1. 初始状态 假设我们的文章初始状态如下,包括一级标题“绪论”、“实验方法”;二级标题“课题背景”、“研究现状”、“实验方法”、“实验结果”;三级标题“方法一”、“方法二”;剩余为正文部分,包括一张图片。 下面我们介绍如何对其设置多级标题,以及为图片插入题注。2. 多级标题2.1 设置标题样式 在开始栏...
2020-05-05 19:59:44
16288
1
原创 UnicodeMath:优雅地在Word中写公式
小学一年级时我们学到,word中内置了公式编辑器功能,而且这个功能如今越来越完善,或许可以让我们抛弃MathType等额外工具了。比如Word2010以后,word中插入公式只需要简单的“Alt”+“=”组合键即可。而且,更优雅的是,Word中支持以UnicodeMath格式编写公式(官方还说支持LaTex格式,可我的Word2016中没看到这个功能…)下面给出一些相关资料,方便查阅使用* ...
2020-04-20 22:11:52
1467
原创 Numpy:np.isin()
numpy中腌膜(mask)功能是个十分实用的技巧,可以参考这篇文章。考虑以下场景: 给定一个数组和一个“集合”,该集合为数字构成的array_like类型,我们需要从该数组中锁定那些属于该集合的元素。 比如给定如下数组a和列表b,那么我们期待得到腌膜c:a = np.array([ [1,2,3], [4,5,6], [7,8,9]])b = [3,4,5,6...
2020-04-18 16:16:07
9258
原创 Numpy:单括号与多括号
今天使用Numpy时出现了一个bug,经过和同学的讨论才最终得以解决…1. 问题:给定数组:a = np.array([ [1,10,1], [2,20,2], [3,30,3], [2,40,4]])要求:如果某一行的第0个元素为2,那么将它的第1个元素改为100即期望输出为:[[ 1 10 1] [ 2 100 2] [ 3 ...
2020-04-17 11:37:59
3402
1
原创 Python dict:字典删除多个元素
关于删除字典的元素,有很多接口函数可用,如del、pop、popitem、clear等,详见官方文档和菜鸟教程下面介绍给定待删除键值的情况下,如何删除多个字典元素:d = {x:x for x in range(5)}popKeys = [2,3]for k in popKeys: d.pop(k)print(d)[Out]:{0: 0, 1: 1, 4: 4}或者,也可...
2020-04-14 17:25:00
13664
原创 Linux命令:xargs
参考:菜鸟教程1. 命令基本介绍2. 示例 比如我当前目录如下: 我希望使用Linux命令将“000005.jpg”~“000008.jpg”复制到dst目录下。 这里我们首先需要利用“ls”命令来获取所有的“.jpg"文件:ls *jpg 然后,我们需要利用tail命令来从第5个文件开始截取:ls *.jpg |tail -n +5 同理,我们只保留上述结果的前4个文件:l...
2020-04-13 17:31:08
253
原创 GaitSet(IAAA2019)(步态识别)
GaitSet是一种针对步态识别问题提出的模型,其切入角度新颖,模型灵活性高,速度快,且性能优秀。下面先介绍一下步态识别任务的基本信息(内容来源于网络查询和本论文的Introduction、Related Work部分),然后再介绍GaitSet架构。1.步态识别任务概述 步态识别任务和传统行人ReID任务类似,即给定注册样本和验证样本,找出验证样本中和注册样本具有相同身份的那些样本。常用数...
2020-04-12 18:58:57
9364
5
原创 HTC(CVPR2019)
HTC(Hybrid Task Cascade)是基于Mask R-CNN和Casecade R-CNN、针对Object Detection和Instance Segmentation任务而设计的一种多阶段模型,并且该模型在COCO 2018 Challenge Object Detection Task中获得第一名。研究背景: Mask R-CNN通过为Faster R-CNN接入并...
2020-04-02 12:45:48
3735
原创 BDB(ICCV2019)
论文链接:https://arxiv.org/abs/1811.07130github:https://github.com/daizuozhuo/batch-dropblock-network作者知乎简介:https://zhuanlan.zhihu.com/p/53241545?utm_source=qq&utm_medium=social&utm_oi=817295961...
2020-03-28 21:51:13
580
原创 PCB-RPP(ECCV 2018)
《Beyond Part Models: Person Retrieval with Refined Part Pooling》论文连接:https://link.zhihu.com/?target=https%3A//arxiv.org/abs/1711.09349github:https://github.com/syfafterzy/PCB_RPP_for_reID(不过作者好像没有提...
2020-03-28 11:42:05
1579
原创 Cascade R-CNN(CVPR2018)
Cascade R-CNN是针对R-CNN系列的two-stage结构,针对“IOU阈值设计”带来的问题而设计的解决方案。在类R-CNN框架中,IOU阈值通常设为0.5,不过这种较低的阈值会为检测带来大量噪声。而若直接提高该阈值,则会造成“(traing time)正样本减少导致过拟合”、“(inference time)预测框和检测器的质量不匹配(mismatch)”等问题(Figure 1)。...
2020-03-26 11:43:22
387
原创 Mask R-CNN(ICCV2017 best paper)
(关于Mask R-CNN的简介)论文:https://arxiv.org/abs/1703.06870github:https://github.com/facebookresearch/detectron2推荐解析:简介:https://blog.csdn.net/u014380165/article/details/81878644详解:https://blog.csdn.net...
2020-03-26 09:46:04
394
原创 MOT Metrics—MOTA vs IDF1?
多目标跟踪中有及其庞杂的性能指标,可以参考这篇博客,其中有两个重要指标:MOTA和IDF1,那么这两个指标侧重点如何?(参考:https://zhuanlan.zhihu.com/p/35391826)MOTA综合考虑轨迹中的FN、FP、IDSW的现象(即虚检、漏检、ID交换)IDF1则是综合考虑IDP和IDR(综合ID准确率和ID召回率)值得注意的是,与MOTA不同的是,IDF1中...
2020-03-23 21:07:37
9875
2
原创 opencv-python:编写个人画板
需求分析: 在一个背景图上(optional) 进行绘制,可以使用圆形刷子或画矩形,也可以使用圆形橡皮;圆形刷子或橡皮可以调整半径; 可以保存结果图以及前景图(即去除掉背景); 本程序可以用于为图像制作mask,因此也对“将mask作用于图像”进行了实现;所需库: import os import sys import cv2 import numpy as np完整源码及注释:...
2020-03-22 21:57:24
696
原创 Numpy:np.all() & np.any()
np.all() 和 np.any() 可以用于再ndarray中实现逻辑上“与”和“或”操作,这在制作ndarray的indices_mask时也很有用处PS:np.all(ndarray)/any(ndarray) 和 ndarray.all()/any() 是等价的方法官方接口和说明:def all(a, axis=None, out=None, keepdims=np._NoVal...
2020-03-22 18:10:24
2945
原创 opencv-python:cv2.waitKey()使用注意
1. waitKey函数功能 说白了就是对键盘事件进行delay(ms)的等待(delay=0则为无限等待),若触发则返回该按键的ASSIC码(否则返回-1)2. 使用范例 这里我们创建一个全黑窗口,并设置按键功能(‘m’,‘n’则打印数字,'q’则退出) PS:ord()函数——Return the Unicode code point for a one-character stri...
2020-03-20 11:13:09
10784
3
原创 Windows:修改键盘映射表
问题场景:最近在用Colabeler做数据集标注,但是发现了一些不方便的地方:工具选择键“R”、翻页键“Right、Left”、保存键“Ctril+S”这些键离得太远了,不方便一套连续操作做下来,而Colabeler又不能修改这些对快捷键的映射,因此只能考虑直接对系统修改键盘映射表了~关于修改方法,可以用第三方软件来做,不过我这里就直接用最根本的方法,即修改注册表中的扫描码映射来解决~本文部分...
2020-03-13 15:03:55
4246
1
原创 Numpy:np.sort() & np.argsort()
numpy 中提供了丰富的数组排序方法,这里只列举最常用的函数和用法~1. np.sort()sort(a, axis=-1, kind=‘quicksort’, order=None):Return a sorted copy of an array.这里,axis指定排序的维度,默认-1指的是最后一个维度a = np.array([ [1,5,9], [4,2,6...
2020-03-08 20:25:45
1761
原创 Python bug:list.insert()无返回值
1. 问题场景:为一个“二维”list中每个“一维”list的开始位置插入一个新元素例:[[1,2,3], [4,5,6]] -> [[‘head’,1,2,3], [‘head’,4,5,6]]2. 错误方法a = [[1, 2, 3], [4, 5, 6]]a = [x.insert(0, 'head') for x in a]print(a)[Out]:[None, N...
2020-03-06 22:31:20
721
原创 Numpy :np.max & np.maximum
ps:np.min/np.minimum同理ps:这里只介绍最常用的功能,详细功能请查看官方文档1. np.max 计算一个数组中的最值(1)基础用法a = np.array([ [1, 2, 3], [4, 5, 6], [7, 8, 9]])print(np.max(a))print(np.max(a, axis=0))print(np.max(a, ...
2020-03-06 22:20:58
494
原创 os:重要函数辨析
python中的os库是一个强大实用的文件及目录处理库,这里辨析几个常见os的功能1. os.path.split() & os.path.splitext()(1)os.path.split() 将文件路径与文件名区分开,返回为元组path = '/data0/dyh/tmp/tmp/tmp.txt'print(os.path.split(path))[Out]:('/dat...
2020-03-05 10:52:22
194
原创 Github:解决电脑无法登陆github.com问题
问题场景:同样连接家庭wifi,手机和ipad可以登陆github,电脑却访问不了解决方法:修改hosts文件(C:\Windows\System32\drivers\etc),删去下面这一行即可hosts文件介绍所以,上述问题的原因是, hosts而将github.com解析成了无效ip,导致无法访问!删去之后将解析任务交给DNS服务器就好了~...
2020-03-03 19:15:41
8599
7
原创 Chrome:Video Speed Controller插件安装与使用
场景:刷网课学分,需要视频加速1. 下载下载地址可以自行查找,我是用的是这个网站的地址下载下来是一个.rar压缩包,可以解压出来.crx文件(有些网站可能直接下载下来就是.crx文件)2. 安装打开Chrome的程序扩展页(chrome://extensions/),将.crx文件拖动到该页面,就会提示安装了!不过,可能会遇到报错:CRX_HEADER_INVALID解决办法是,...
2020-03-03 09:02:48
50691
14
原创 Linux:创建新用户并安装anaconda3
1. 创建新用户(1)sudo adduser dyh 2. 联网(1)生成联网脚本(2)运行联网脚本(3)联网成功 3. 安装anaconda3(1)找到对应版本的安装包,下载,并bash运行 wget https://repo.anaconda.com/archive/Anaconda3-2019.10-Linux-x86_64.sh注意,新安装a...
2020-02-29 15:24:35
923
原创 图像处理:压缩方法对图片大小的影响(cv2 vs PIL)
同一图片,用不同的库读取并保存后,图片大小受压缩方式影响很大~试验方法:- python库opencv与PIL- 输出格式:png与jpg代码如下,仅仅是直接读入然后保存而已import cv2from PIL import Imagename = 1 # 2img = Image.open('{}.jpg'.format(name))img.save('{}_pil.jpg...
2020-02-26 10:15:37
3181
原创 PS:“内容识别填充”去水印
1. 内容识别填充 矩形框选中水印区域,“编辑—内容识别填充”,然后调整参数后回车即可~ 2. 利用“色彩范围”+“扩展”+“内容识别”...
2020-02-21 20:30:15
1726
1
原创 PyQt5:QPainter使用注意
官方文档:https://doc.qt.io/qtforpython/PySide2/QtGui/QPainter.htmlQPainter是Qt中一个方便的绘图类,下面以“为界面填充背景”为例,说明一下QPainter使用时需要注意的点先给出完整程序,其中’try/video_1.ui’是提前用designer写好的一个ui文件,'icon/bg_2.jpg’是一张背景图:import s...
2020-02-12 22:13:06
1830
原创 PyQt5:简易视频播放器
本文旨在介绍如何使用PyQt5制作简易的视频播放器ps:有些网友也许会遇到只能播放avi格式视频,而mp4等格式无法播放的问题(DirectShowPlayerService::doRender: Unresolved error code 0x8040266 (IDisspatch error #102)),这需要下载一个解码器,可参考这篇博客。Version 1:最简易播放器 直...
2020-02-12 21:36:50
15070
31
原创 Python trick:[::] & reversed—列表的倒序遍历
1. 问题场景列表倒序遍历length = 10my_list = [i for i in range(length)]2. 实现方法2.1 rang()for i in range(length-1, -1, -1): tmp = my_list[i]2.2 reverse()for a in reversed(my_list): tmp = a2.3 [...
2020-01-13 20:31:49
392
原创 Python trick:filter—序列滤波
1. 问题场景删除列表中的正数部分my_list = [i for i in range(10)]for it in my_list: if it>0: my_list.remove(it)print(my_list)out: [0, 2, 4, 6, 8]2. 问题分析for … in 遍历中,是利用下标遍历的,这个下标从开始就固定了:0~9而随...
2020-01-11 17:14:10
628
原创 Python trick:zip—同时遍历多个等长列表
1. 问题场景同时遍历两个长度为length的列表2. 可选方案双层循环利用index单层循环访问利用zip单层循环访问3. 实现代码length = 100000a = list(np.random.rand(length))b = list(np.random.rand(length))time1 = time()# 方法一for i in a: for j...
2020-01-11 11:30:44
780
原创 Numpy trick:矩阵运算优化
1. 问题场景按pair-wise计算两组L维向量的平方差距离:输入矩阵维度为 a:M×L,b:N×L输出矩阵维度为 c:M×N,其中entry(i,j)为第i个L维a向量和第j个L维b向量间的平方差距离M, N, L = 10, 20, 50 a = np.ones((M, L), dtype=np.float32)b = np.ones((N, L), dtype=np.fl...
2020-01-09 21:50:06
1045
原创 Linux:.sh文件的格式及权限管理
问题场景在Windows下git clone了一个工程,并通过PyCharm远程传到Linux服务器上。执行dist_test.sh文件,报错1. dos与unix从上述报错中我们可以看到,报错原因是“$’\r’: command not found”,也就是发现了未知的“/r”命令。我们用vim打开dist_bash.sh文件,发现其为"dos"格式:而我们在Linux下应该使用...
2020-01-08 16:49:19
2039
原创 Numpy trick:array[mask]
本文简介一个numpy中的小trick,即用一个dtype=boolean的list作为mask来读取np.array原理很简单,直接给示例:array1 = np.array([1,2,3,4])array2 = np.array([[1,2,3,4,5], [6,7,8,9,10], [11,12,13,14,15], ...
2020-01-05 13:13:25
1140
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人