Python
gmHappy
从不敢夜郎自大,但也不至于妄自菲薄,只是想做一个靠本事吃饭的手艺人
展开
-
python 2.7利用 virtualenv 搭建虚拟环境
Python创建虚拟环境创建虚拟环境是为了让项目运行在一个独立的局部的Python环境中,使得不同环境的项目互不干扰。安装虚拟环境的第三方包 virtualenvpip install virtualenv -i https://pypi.python.org/simple/解决ImportError: No module named zipppip install zipp==1.2.0解决ImportError: No module named configparserpip instal原创 2020-09-09 18:09:19 · 1954 阅读 · 0 评论 -
基于emq x开源版实现服务重启后主题和消息恢复的完整方案(二)
emqx_restart_resume用于emqx开源版 服务重启后恢复原订阅主题和持久化数据问题开源版emq在服务重启后原订阅的主题会清空,在客户端保持原clientId,保持原session未重新订阅时,接不到服务器转发的消息。开源版持久化会模型保存主题下的最后一条消息,在重启后也会被清空。解决方案利用EMQ X Web Hook插件将时间发送到指定的请求,利用Redis ...原创 2020-03-19 13:36:23 · 2406 阅读 · 0 评论 -
轻量级车牌检测开源项目(支持车牌四顶点定位、车牌矫正对齐)
Pytorch_Retina_License_Plate利用RetinaFace进行迁移学习实现的车牌检测、车牌四角定位、车牌矫正对齐程序。当Retinaface使用mobilenet0.25作为骨干网时,模型大小仅为1.8M我们还提供resnet50作为骨干网以获得更好的结果。RetinaFace的官方代码可以在这里找到。内容环境说明安装数据训练TODO参考文献环境说...原创 2020-01-10 14:16:49 · 3748 阅读 · 4 评论 -
人脸识别概述及基于多显卡服务器实现百万底库人脸比对的简单实现方案
基础知识介绍人脸识别流程人脸识别技术原理简单来讲主要是三大步骤:一是建立一个包含大批量人脸图像的数据库,二是通过各种方式来获得当前要进行识别的目标人脸图像,三是将目标人脸图像与数据库中既有的人脸图像进行比对和筛选。根据人脸识别技术原理具体实施起来的技术流程则主要包含以下四个部分,即人脸图像的采集与预处理、人脸检测、人脸特征提取、人脸识别和活体鉴别。人脸图像的采集与预处...原创 2019-12-24 16:42:07 · 1959 阅读 · 0 评论 -
jeston nano 刷机及开发环境搭建(一)
刷机参照官网文档:https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit镜像下载下载地址:https://developer.nvidia.com/jetson-nano-sd-card-image-r3223镜像文件写入microSD卡Nvidia官方推荐使用Etcher将下载的img文件写入T...原创 2019-12-14 14:26:00 · 3755 阅读 · 2 评论 -
Ubuntu18.04+CUDA9.0+cuDNN7.5.0.56+TensorRT5.1.2.2RC+pycuda2019.1.1+onnx1.4.1 安装总结
NVIDIA驱动下载地址:https://www.geforce.com/drivers#我选驱动390.116CUDA Toolkit安装下载地址:https://developer.nvidia.com/cuda-90-download-archive?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&am...原创 2019-12-10 14:48:29 · 1618 阅读 · 0 评论 -
基于 docker容器搭建机器学习环境
下载docker镜像docker pull ubuntu:18.04进入Ubuntu系统命令docker run -ti ubuntu /bin/bash正确退出系统方式先按,ctrl+p再按,ctrl+q这样系统就会在后台继续运行最好不要使用exit或者ctrl+d来退出,这样整个系统就退出了退出后再进入ubuntu系统首先用docker ps -a 查找到该CONTA...原创 2019-11-13 17:08:30 · 1397 阅读 · 0 评论 -
python 基于detectron或mask_rcnn的mask遮罩区域进行图片截取
基于示例infer_simple.py修改165行vis_utils.vis_one_image为vis_utils.vis_one_image_opencv在detectron.utils.vis中新增def cut_mask(img, mask)def cut_mask(img, mask, col, alpha=0.0, show_border=True, border_thick=1...原创 2019-11-13 09:18:24 · 2753 阅读 · 10 评论 -
python cv2截取不规则区域图片
知识掌握cv2.threshold()函数:设置固定级别的阈值应用于多通道矩阵,将灰度图像变换二值图像,或去除指定级别的噪声,或过滤掉过小或者过大的像素点。Python: cv2.threshold(src, thresh, maxval, type[, dst]) → retval, dst在其中:src:表示的是图片源thresh:表示的是阈值(起始值)maxval:表示的是...原创 2019-11-09 12:35:03 · 5470 阅读 · 0 评论 -
python cv2读取rtsp实时码流按时生成连续视频文件
# coding: utf-8import datetimeimport cv2import os ip = '192.168.3.160'.replace(".", "_") rtsp = 'rtsp://admin:admin@192.168.3.160:554/1/1' # 初始化摄像头cap = cv2.VideoCapture(rtsp)fourcc = cv2.V...原创 2019-11-08 17:21:25 · 1909 阅读 · 0 评论 -
NLP 基于kashgari和BERT实现中文命名实体识别(NER)
准备工作,先准备 python 环境,下载 BERT 语言模型Python 3.6 环境需要安装kashgariBackendpypi version descTensorFlow 2.xpip install ‘kashgari>=2.0.0’ coming soonTensorFlow 1.14+pip install ‘kashgari>=...原创 2019-10-30 15:20:51 · 4830 阅读 · 4 评论 -
python 利用已有Ner模型进行数据清洗合并
# -*- coding: utf-8 -*-from kashgari.corpus import DataReaderimport refrom tqdm import tqdmdef cut_text(text, lenth): textArr = re.findall('.{' + str(lenth) + '}', text) textArr.append(t...原创 2019-10-30 14:34:42 · 815 阅读 · 0 评论 -
python 快速排序实现
# -*- coding: utf-8 -*-def quicksort(array): # 基线条件:为空或只包含一个元素的数组是“有序”的 if len(array) < 2: return array else: pivot = array[0] # 递归条件 less = [i fo...原创 2019-05-22 16:45:34 · 333 阅读 · 0 评论 -
python 二分法实现
# -*- coding: utf-8 -*-def BinarySearch(arr, key): # 记录数组的最高位和最低位 min = 0 max = len(arr) - 1 if key in arr: # 建立一个死循环,直到找到key while True: # 得到中位数 ...原创 2019-05-22 15:50:58 · 680 阅读 · 0 评论 -
基于Nginx+nginx-rtmp-module+ffmpeg搭建rtmp、hls流媒体服务器(二)
动态进行rtmp转换,需要用到Python和Rediscontroller.py# -*- coding:utf-8 -*-import subprocessimport time import argparseimport redisimport sysimport codecssys.stdout = codecs.getwriter("utf-8")(sys.stdout....原创 2019-04-25 11:07:34 · 2379 阅读 · 1 评论 -
OpenCV VideoCapture.get()参数详解
paramdefinecv2.VideoCapture.get(0)视频文件的当前位置(播放)以毫秒为单位cv2.VideoCapture.get(1)基于以0开始的被捕获或解码的帧索引cv2.VideoCapture.get(2)视频文件的相对位置(播放):0=电影开始,1=影片的结尾。cv2.VideoCapture.get(3)在视频流的帧的宽度...原创 2019-04-18 15:53:32 · 1618 阅读 · 0 评论 -
Python 中Semaphore 信号量对象、Event事件、Condition
Semaphore 信号量对象信号量是一个更高级的锁机制。信号量内部有一个计数器而不像锁对象内部有锁标识,而且只有当占用信号量的线程数超过信号量时线程才阻塞。这允许了多个线程可以同时访问相同的代码区。Semaphore管理一个内置的计数器,每当调用acquire()时内置计数器-1;调用release() 时内置计数器+1;计数器不能小于0;当计数器为0时,acquire()将阻塞线程直到其...原创 2019-04-17 14:48:53 · 1435 阅读 · 0 评论 -
Python3 A*寻路算法实现
# -*- coding: utf-8 -*-import mathimport randomimport copyimport timeimport sysimport tkinterimport threading# 地图tm = ['############################################################','#S......原创 2019-07-08 13:12:06 · 1690 阅读 · 1 评论 -
Python 中的Lock与RLock
摘要由于多线程共享进程的资源和地址空间,因此,在对这些公共资源进行操作时,为了防止这些公共资源出现异常的结果,必须考虑线程的同步和互斥问题。为什么加锁:1、用于非线程安全, 2、控制一段代码,确保其不产生调度混乱。threading.Lock的用法下面是一个python多线程的例子:import threadingcount = 0def print_time(threadName...原创 2019-04-17 14:10:07 · 681 阅读 · 0 评论 -
python 查询Neo4j多节点的多层关系
# -*- coding: utf-8 -*-from py2neo import Graph# 二维数组查找def find(target, array): for i, val in enumerate(array): for j, temp in enumerate(val): if temp == target: ...原创 2019-06-01 10:48:04 · 9825 阅读 · 1 评论 -
python gRPC简单示例
Ubuntu18.04安装gRPCprotobuf-compiler-grpc安装sudo apt-get install protobuf-compiler-grpcprotobuf-compiler安装sudo apt-get install protobuf-compilergRPC 的安装:pip install grpcio安装 ProtoBuf 相关的 python 依...原创 2019-06-13 15:28:42 · 2148 阅读 · 1 评论 -
python 调用dll 动态链接库 结构体参数及回调函数等示例
结构体示例:这里是 C 代码的部分,主要是结构体的声明和回调函数定义。// 新版本定义typedef enum { DevCard, DevLocator, DevReader} DevType;typedef enum { MsgLocate, // 定位信号 MsgCut, // 剪断信号 MsgHeartB...原创 2019-06-04 11:31:38 · 5739 阅读 · 1 评论 -
python 实现屏幕录制
用python实现屏幕录制PIL 即pollow 的安装命令如下:pip install pillow其中cv2的安装是下面这条命令pip install opencv-python代码实现:# coding: utf-8from PIL import ImageGrabimport numpy as npimport cv2 fps = 20start = 3 # ...原创 2019-06-12 10:19:50 · 11815 阅读 · 6 评论 -
python 解决cv2绘制中文乱码
因为使用cv2.putText() 只能显示英文字符,中文会出现乱码问题,因此使用PIL在图片上绘制添加中文,可以指定字体文件。大体思路:OpenCV图片格式转换成PIL的图片格式;使用PIL绘制文字;PIL图片格式转换成OpenCV的图片格式;具体实现:# coding=utf-8# cv2解决绘制中文乱码 import cv2import numpyfrom PIL...原创 2019-06-12 11:12:23 · 31277 阅读 · 11 评论 -
python cv2展示网络图片、图片编解码、及与base64转换
从网络读取图像数据并展示需要使用cv2.imdecode()函数,从指定的内存缓存中读取数据,并把数据转换(解码)成图像格式;主要用于从网络传输数据中恢复出图像。# -*- coding: utf-8 -*-import numpy as npfrom urllib import requestimport cv2 url = 'https://www.baidu.com/img...原创 2019-06-12 11:52:40 · 5807 阅读 · 1 评论 -
python 绘制对象检测框及中文信息标注
# 坐标顺序: 上-》左-》下-》右def draw_bounding_box_on_image(image, ymin, xmin, ymax, x...原创 2019-07-17 11:16:24 · 2034 阅读 · 2 评论 -
ZeroMQ 三种模式python3实现
ZeroMQ是一个消息队列网络库,实现网络常用技术封装。在C/S中实现了三种模式,这段时间用python简单实现了一下,感觉python虽然灵活。但是数据处理不如C++自由灵活。Request-Reply模式:客户端在请求后,服务端必须回响应server:# -*-coding:utf-8 -*-import zmq context = zmq.Context()socket...原创 2019-08-21 10:08:02 · 1504 阅读 · 1 评论 -
Anaconda 安装及Python 多版本间切换
安装 Anaconda安装anaconda安装较为简单,这里参考官方文档:https://docs.continuum.io/anaconda/install/linux.html在文件目录下执行:bash Anaconda3-5.2.0-Linux-x86_64.sh之后根据提示输入回车、Yes、No即可检查环境变量查看命令sudo gedit /etc/profile检查...原创 2019-01-21 11:19:32 · 8854 阅读 · 0 评论 -
BrokenPipeError: [Errno 32] Broken pipe
运行Pytorch tutorial代码报错:BrokenPipeError: [Errno 32] Broken pipe源代码地址:Training a classifier (CIFAR10)该问题的产生是由于windows下多线程的问题,和DataLoader类有关,具体细节点这里Fix memory leak when using multiple workers on Win...转载 2019-04-08 16:56:00 · 1803 阅读 · 0 评论 -
Python 自定义三方库
一、注册一个pypi账号https://pypi.org/二、github上创建一个项目https://github.com/三、编写自己的python项目项目结构(参考):https://github.com/gm19900510/licensetool先建一个目录,比如magetool,这个里边放的是你的项目代码。在这个magetool目录里,新建一个__init__.py,这个文...原创 2019-04-11 15:54:22 · 1992 阅读 · 0 评论 -
InisghtFace 制作自定义数据集和模型训练评估
前言本文以lfw数据集进行示例lfw结果集下载地址:http://vis-www.cs.umass.edu/lfw/lfw.tgzinsightface源码下载地址:https://github.com/deepinsight/insightfaceinsightface作者提供了完整的工程,能够基本满足并完成人脸识别流程数据清洗用的方法是先用作者的model对我的数据集进行一次特征提...原创 2019-03-28 16:44:45 · 2672 阅读 · 0 评论 -
Python 操作sqlite数据库及保存查询numpy类型数据(一)
# -*- coding: utf-8 -*-'''Created on 2019年3月6日@author: Administrator'''import sqlite3import numpy as npimport iodef adapt_array(arr): out = io.BytesIO() np.save(out, arr) out.se...原创 2019-03-06 09:42:05 · 2803 阅读 · 0 评论 -
Object of type 'ndarray' is not JSON serializable
Object of type 'ndarray' is not JSON serializableimport numpy as npimport jsonarr=np.asarray([345,45])result={'name':'test','num':ar}json.dump(result)解决方法:result={'name':'text','num':a...原创 2019-02-28 17:28:16 · 19597 阅读 · 2 评论 -
MTCNN 人脸检测
demo.pyimport cv2from detection.mtcnn import MTCNN# 检测图片中的人脸def test_image(imgpath): mtcnn = MTCNN('./mtcnn.pb') img = cv2.imread(imgpath) bbox, landmarks, scores = mtcnn.detect_f...原创 2019-02-28 14:29:51 · 2055 阅读 · 2 评论 -
python 中PIL.Image和OpenCV图像格式相互转换
PIL.Image转换成OpenCV格式:import cv2from PIL import Imageimport numpy image = Image.open("plane.jpg")image.show()img = cv2.cvtColor(numpy.asarray(image),cv2.COLOR_RGB2BGR)cv2.imshow("OpenCV",img)...原创 2019-02-21 15:45:59 · 4886 阅读 · 1 评论 -
python OpenCV视频的读取及保存
import cv2cap = cv2.VideoCapture('rtsp://admin:hik12345@192.168.3.160/Streaming/Channels/1')fourcc = cv2.VideoWriter_fourcc(*'XVID')# fps = cap.get(cv2.CAP_PROP_FPS)size = (int(cap.get(cv2.CAP_P...原创 2019-02-21 15:42:36 · 2272 阅读 · 0 评论 -
Ubuntu Anaconda3 环境下安装caffe
安装Python环境本人环境为Anaconda3 ,可参照 https://blog.csdn.net/ctwy291314/article/details/86571198 完成安装Python2.7环境安装与多Python环境切换。安装依赖包sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopenc...原创 2019-01-22 11:59:51 · 7602 阅读 · 1 评论 -
python Opencv图像基础操作
读取并显示图像如果读取图像首先要导入OpenCV包,方法为:import cv2读取并显示图像img = cv2.imread("C:\test1.jpg")OpenCV目前支持读取bmp、jpg、png、tiff等常用格式。更详细的请参考OpenCV的参考文档。接着创建一个窗口cv2.namedWindow("Image")然后在窗口中显示图像cv2.imshow("Image...原创 2019-01-09 16:33:11 · 1184 阅读 · 0 评论 -
python 安装opencv及问题解决
正常安装模式pip install opencv-python==3.4.5.20pip install opencv-contrib-python==3.4.5.20 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com选择安装的是3.4.5.20版本非正常模式在按照上述步骤安装完成后,导入时候就提示:impo...原创 2019-01-10 14:33:11 · 1711 阅读 · 0 评论 -
Python subprocess ffmpeg
# -*- coding:utf-8 -*-import os, sys, getoptimport numpy as npimport subprocess as spimport cv2# command line parser'''try: opts, args = getopt.getopt(sys.argv[1:], "i:s:",["help"])excep...原创 2018-10-24 13:33:02 · 4187 阅读 · 0 评论