
python
文章平均质量分 60
python基础应用语法总结
jingbo1801
机器视觉、图像,TX2,python,c++
展开
-
python系列文章目录及学习资源汇总
这里主要介绍工作中python常用语法。如果需要了解相关标准库或对象的详细介绍,请查阅python官方文档3。python官方文档3提供了更多语言相关的正式说明。如果想要使用 C 或 C++ 编写扩展,请查阅Python 解释器扩展和集成章节和C API 参考手册。推荐python学习阅读:1、廖雪峰的python3讲解-很系统https://www.liaoxuefeng.com/wiki/10169596636024002、python官方文档翻译版-常见操作http://w...原创 2020-06-10 22:53:02 · 754 阅读 · 0 评论 -
python time 获取毫秒级时间戳
【代码】python time 获取毫秒级时间戳。原创 2023-06-19 21:04:29 · 6208 阅读 · 0 评论 -
python 异步操作async和await
asyncio是"多任务合作"模式(cooperative multitasking),允许异步任务交出执行权给其他任务,等到其他任务完成,再收回执行权继续往下执行。协程(Co-routine),也可称为微线程,或非抢占式的多任务子例程,一种用户态的上下文切换技术(通过一个线程实现代码块间的相互切换执行)。我们从asyncio模块中直接获取一个EventLoop的引用,然后把需要执行的协程扔到EventLoop中执行,就实现了异步IO。携程对象:执行携程函数 函数名(),得到的就是携程对象。原创 2023-01-29 22:33:23 · 13708 阅读 · 1 评论 -
python websockets实现server和client的通信
第二层 while 的作用是保证 ws 连接一直处于接收状态(长连接),当 ws 被服务端关闭时,会抛出 ConnectionClosed ,一般我们会收到 1000 正常关闭码和 1006 服务端内部错误异常关闭码两种,在上文的代码中,我们收到异常 1006 关闭码时,就 break 退出 while 循环,从而自动关闭 ws 连接上下文,进行一次新的 ws 上下文连接。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输。原创 2023-01-29 22:26:24 · 7409 阅读 · 0 评论 -
cv2 可视化操作整理(直线,圆,矩形,多边形,文本)
经常需要图像上显示下结果,用的时候却总差几个参数记不清,整理记录下。原创 2022-09-07 22:38:58 · 2590 阅读 · 0 评论 -
python os.path.abspath()与os.path.realpath()区别
下面测试需 import os。python os.path.abspath()与os.path.realpath()区别原创 2022-08-03 21:29:46 · 2301 阅读 · 1 评论 -
python scipy矩阵函数
1、矩阵函数考虑函数 f(x) 泰勒级数展开:可以使用此泰勒级数为方阵定义矩阵函数 A 作为:虽然这可以作为矩阵函数的有用表示,但它很少是计算矩阵函数的最佳方法。2、指数和对数函数矩阵指数是比较常见的矩阵函数之一。实现矩阵指数的首选方法是使用缩放和 Padé 近似e^x,该算法实现为linalg.expm。矩阵指数的倒数是定义为矩阵指数的倒数的矩阵对数:矩阵对数可以用 获得...原创 2022-05-14 22:11:41 · 1397 阅读 · 0 评论 -
python scipy矩阵分解
在许多应用程序中,使用其他表示形式分解矩阵非常有用。SciPy支持多种分解,并不是所有的都会用到,本文根据实际使用情况逐步添加测试用例。1、特征值和特征向量特征值-特征向量问题是最常用的线性代数运算之一。在一种流行的形式中,特征值-特征向量问题是找到一些方阵A标量lamda和相应的向量 v, 这样:例如,考虑找到矩阵的特征值和特征向量:特征多项式是:A的特征值为:当A为方阵...原创 2022-05-14 22:09:32 · 2526 阅读 · 0 评论 -
python scipy.linalg线性代数计算
当使用优化的 ATLAS LAPACK 和 BLAS 库构建 SciPy 时,它具有非常快速的线性代数功能。如果你深入挖掘,所有原始 LAPACK 和 BLAS 库都可供您使用,以提高速度。所有这些线性代数例程都需要一个可以转换为二维数组的对象。这些例程的输出也是一个二维数组。1、scipy.linalg 与 numpy.linalgscipy.linalg包含 numpy.linalg中的所有函数,加上其他一些不包含在numpy.linalg。scipy.linal...原创 2022-05-14 22:04:24 · 4283 阅读 · 0 评论 -
python 批量编译pyc文件
pyc文件是py文件编译后生成的字节码文件(byte code),pyc文件经过python解释器最终会生成机器码运行。因此:pyc文件是可以跨平台部署的,类似Java的.class文件,一般py文件改变后,都会重新生成pyc文件。1、Python生成单个pyc文件1)对于py文件,可以执行下面命令来生成pyc文件。python -m test.py2)通过python代码来生成pyc文件。import py_compile py_co...原创 2022-05-12 21:14:07 · 1029 阅读 · 0 评论 -
python中异常值的意义及判断(Nan,None,inf)
1、None判断当函数无法回值时,默认返回值为None。判断x是否为None:x is None。应用:判断图像读取是否成功。try: img = cv2.imdecode(np.fromfile(file_path, dtype=np.uint8), 1) assert len(img.shape) == 3except Exception as err: print("img_read error:", err)2、inf判断python中...原创 2022-05-12 21:10:57 · 3352 阅读 · 0 评论 -
windows设置终端启动时打开conda虚拟环境
项目需要,双击启动python脚本,但实际的python环境在虚拟环境envs下,首先使用.bat批处理文件,失败。后尝试快捷方式执行,成功!在开始菜单中找到anaconda标签,打开文件所在位置。看到快捷方式,双击,可直接进入conda虚拟环境。可以看到,相比我们自己打开的cmd,该链接自动进行conda虚拟环境。我们希望打开链接时自动切换到自定义的虚拟环境,还希望最好能自动切换到其它盘符,执行其中的脚本命令。...原创 2022-04-25 22:20:00 · 9161 阅读 · 0 评论 -
python ftp下载上传文件或文件夹
实际需要,编写一个脚本,通过ftp下载文件或这文件夹。1、包引用使用python自带的包ftplib。from ftplib import FTP添加对中文路径的支持:代码里头设置下 ftp.encoding = 'utf-8'否则,遇到中文路径会报错:UnicodeEncodeError: 'latin-1' codec can't encode characters in position 24-25: ...原创 2022-04-25 21:28:22 · 10137 阅读 · 2 评论 -
python自定义包代码转 .pyd
需要Cython库支持,windows上编译需要vs编译器支持。windows上编译结果为.pyd文件,linux上编译结果为.so。1、安装Cython库pipinstallcython2、创建工程并生成.pyd文件新建一个test.py文件,内容如下:#!/usr/bin/env python3# coding: utf-8def hello(): print("Hello world")创建setup.py...原创 2022-04-05 22:16:27 · 1526 阅读 · 1 评论 -
python读取图片属性信息
从照片里面获取GPS信息。可交换图像文件常被简称为EXIF(Exchangeable image file format),是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据,EXIF信息不支持png,webp等图片格式。Python中使用ExifRead包读取图片的属性信息,安装方式为:pip install exifread使用exifread.process_file获取图像的信息:img_path = r"b...原创 2022-03-07 21:50:31 · 2993 阅读 · 0 评论 -
python itertools内置无限迭代器
Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数,itertools提供的几个“无限”迭代器。1、count()创建自然数序列import itertoolsn = 0natuals = itertools.count(1)for m in natuals: print(m)因为count(n)会创建一个无限的迭代器,起始数字为n,迭代至无穷大。所以上述代码会打印出自然数序列,根本停不下来,只能按Ctrl+C退出。...原创 2022-02-08 21:37:03 · 777 阅读 · 0 评论 -
os.path的替代pathlib
在Python 3.4之前和路径相关操作函数都放在os模块里面,尤其是os.path这个子模块,可以说os.path模块非常常用。而在Python 3.4,标准库添加了新的模块 - pathlib,它使用面向对象的编程方式来表示文件系统路径。如果你的新项目可以直接用 3.6 以上,建议用 pathlib 。相比于老式的 os.path 有几个优势:1)老的路径操作函数管理比较混乱,有的是导入 os, 有的又是在 os.path 当中,而新的用法统一可以用 pathlib ...原创 2022-01-27 21:58:19 · 469 阅读 · 0 评论 -
python scipy曲线拟合
需要使用曲线拟合,又不想自己从头实现,查找script库实现。安装:pip install scipy numpy matplotlib代码实现:import mathimport numpy as npfrom scipy import optimizeimport matplotlib.pyplot as pltdef linear_func(x, k, b): return k * x + bdef main(): plt.figure...原创 2021-11-25 22:19:06 · 2122 阅读 · 0 评论 -
python计算程序运行时间
方法1,返回为datetime类型import datetimestarttime = datetime.datetime.now()# long runningtime.sleep(10)endtime = datetime.datetime.now()print ((endtime - starttime).seconds)结果:run time: 10推荐法2、法3def my_func(second): # 休眠second秒. # import原创 2021-10-27 21:43:25 · 804 阅读 · 0 评论 -
python netifaces模块实现查看网络设备信息(ifconfig -a)
linux上查看网络设备可使用:ifconfig -a,现在需要使用python脚本识别网络设备,并获得信息。查到一个比较好用的模块,可以用来获取本机网卡信息的第三方库,如ip地址, MAC地址等等信息,支持Windows, Linux和MacOS。1、netifaces安装pip install netifaces某些嵌入式设备无法安装,可下载源码安装。可以在Python官网上去下载对应的源码:https://pypi.python.org/pypi/neti...原创 2021-10-14 22:02:22 · 2101 阅读 · 0 评论 -
python调用shell命令
1、使用s模块的system方法语法:os.system(cmd)返回值是shell指令运行后返回的状态码,int类型,0表示shell指令成功执行,256表示未找到,该方法适用于shell命令不需要输出内容的场景。import os val = os.system('ls -al') print val没有找到时,sh返回的状态码是1,而适用python调用,返回的是:256。缺点:脚本中得不到shell输出结果。2、...原创 2021-10-14 21:57:23 · 559 阅读 · 0 评论 -
opencv的cv2.minAreaRect函数输出角度问题
网上很多例子都说cv2.minAreaRect函数的输出的角度范围在[-90,0],但是实测输出范围在[0,90]。再进行调研,确定为opencv4.5版本升级改动引起。cv2.minAreaRect输入:四边形的四个点(不要求顺序)。输出:最小外接矩形的中心点坐标x,y,宽高w,h,角度anlge,输出形式为元组((x,y),(w,h),anlge),顺序格式不变。1、4.5版本4.5版本定义为,x轴顺时针旋转最先重合的边为w...原创 2021-09-11 16:38:52 · 7680 阅读 · 3 评论 -
pip 文件损坏导致cannot import name ‘main‘ from ‘pip._int-重新安装
pip报错情况:ImportError: cannot import name 'InvalidSchemeCombination' from 'pip._internal.exceptions原因:pip 文件损坏。linux上解决办法:python -m ensurepippython -m pip install --upgrade pipwindows上解决办法:step1、 执行命令:python -m ensurepip --default-pipstep原创 2021-09-08 22:38:12 · 1133 阅读 · 0 评论 -
cv2常用操作整理
1、图像基本操作1.1、像素操作img.item(i,j,k) //获取通道像素值 等价于img[i,j,k]img.itemset((i,j,k),val) //设置像素的值 等价于img[i,j,k] = val1.2、拆分及合并图像通道b,g,r=cv2.split(img) //拆分b=img[:,:,0] //分开取B通道img[:,:,0]=0 //B通道置为0img=cv2.merge(b原创 2021-07-15 21:44:59 · 2670 阅读 · 1 评论 -
python tcp传字符串
使用tcp进行字符串网络收发。主要分为两个部分:1、服务端step1、创建socket、绑定IP和端口号,开启监听;step2、等待客户端建立socket连接;step3、接收的字符串流,显示;也可主动发送数据给客户端;step4、关闭socket通道、关闭server;2、客户端step1、创建基于TCP的socket;step2、连接的IP地址以及端口;step3、发送,必须用二进制进行发送消息;step4、关闭连接;服务端逻辑,serve.py:#!/原创 2021-06-09 21:06:21 · 2223 阅读 · 2 评论 -
DeprecationWarning: The binary mode of fromstring is deprecated, as it behaves surprisingly on unico
使用opencv做图像传输时,遇到错误:DeprecationWarning: The binary mode of fromstring is deprecated, as it behaves surprisingly on unicode inputs. Use frombuffer insteadnparr = np.fromstring(imgString,np.uint8)参考链接:https://github.com/tensorflow/tensorflow/issues/172原创 2021-06-03 23:51:06 · 3876 阅读 · 2 评论 -
python cv2图像质量压缩
目录1、转为二进制编码2、图像质量压缩使用opencv对图像进行编码,一方面是图像二进制传输的需要,另一方面对图像压缩。以jpeg压缩为例:1、转为二进制编码img = cv2.imread(img_path)# 取值范围:0~100,数值越小,压缩比越高,图片质量损失越严重params = [cv2.IMWRITE_JPEG_QUALITY, ratio] # ratio:0~100msg = cv2.imencode(".jpg", img, params)[1]msg原创 2021-06-03 23:44:08 · 18054 阅读 · 12 评论 -
python3 str与bytes转换,定义bytes类型
python3默认的字符串常量为str类型,有时候需要转换为二进制形式。1、str转bytes# str to bytesmy_str = "hello"my_bytes = str.encode(my_str)print("my_str:", type(my_str))print("my_bytes:", type(my_bytes))输出:my_str: <class 'str'>my_bytes: <class 'bytes'>2、bytes转原创 2021-06-03 22:27:01 · 1524 阅读 · 0 评论 -
python使用tcp传输图像
使用tcp进行图像网络收发。主要分为两个部分:1、服务端step1、启动服务,等待客户端连接;step2、等待并接受客户端数据;step3、接收的二进制流解码,显示;step4、关闭服务;2、客户端step1、建立socket客户端,连接主机;step2、读取,转二进制编码;step3、发送;step4、关闭服务;服务端逻辑,serve.py:#!/usr/bin/env python# coding: utf-8import cv2import s原创 2021-06-03 22:19:06 · 8240 阅读 · 4 评论 -
cv2读写视频
目录1、视频读取2、视频写入1、视频读取def video_read(): file_path = r"03000003810000000.mp4" capture = cv2.VideoCapture(file_path) if not capture.isOpened(): print("打开视频失败!") fps = capture.get(cv2.CAP_PROP_FPS) size = (int(capture.get(c原创 2021-06-02 21:59:42 · 3349 阅读 · 7 评论 -
python获取桌面截图
python获取桌面截图有多种方式,常用的两个如下:1、PIL中的ImageGrab模块使用PIL中的ImageGrab模块简单,但是效率有点低,截屏一次需0.5s。import timeimport numpy as npfrom PIL import ImageGrabimg = ImageGrab.grab(bbox=(100, 161, 1141, 610))img = np.array(img.getdata(), np.uint8).reshape(img.size[1]原创 2021-06-01 20:56:48 · 1383 阅读 · 0 评论 -
pip换源及使用
目录1、pip源2、修改默认源3、其它指令3.1、升级包3.2、查看已经安装的包及版本信息3.3、显示包所在目录及信息4、pip安装1、pip源国内强烈推荐豆瓣的源:http://pypi.douban.com/simple/使用豆瓣源安装方式:pip install -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple ipython其它源:1)阿里云:http:原创 2021-05-20 23:37:42 · 571 阅读 · 0 评论 -
python屏蔽警告
目录1、取消所有警告2、局部子块内屏蔽警告3、屏蔽特定警告python工程中,有时候包升级会出现频繁警告。打乱log显示。所以,屏蔽之。1、取消所有警告import warningswarnings.filterwarnings("ignore")这条语句之后的警告都将会被忽略,之前的不受影响。2、局部子块内屏蔽警告import warningswith warnings.catch_warnings(): warnings.simplefilter("原创 2021-05-19 22:39:25 · 2883 阅读 · 0 评论 -
Python 内置函数
1、迭代器判断1.1、all()函数all() 函数用于判断给定的可迭代参数 iterable 中的所有元素是否都为 TRUE,如果是返回 True,否则返回 False。元素除了是 0、空、None、False 外都算 True。列表[]、元组()。all(['a','b','c','d'])# 列表list,元素都不为空或0=> Trueall(['a','b','','d'])# 列表list,存在一个为空的元素=> Falseall([...原创 2020-12-15 22:22:54 · 456 阅读 · 1 评论 -
python eval(), exec(), compile()函数
目录1、eval()2、exec()3、compile()mmclassification工程中,setup.py文件出现如下代码,读取mmcls/version.py文件内容->执行,之后通过locals()获取所有局部变量,返回mmcls/version.py中定义的__version__的值。def get_version(): version_file = 'mmcls/version.py' with open(version_file, 'r', en原创 2020-12-15 21:32:15 · 744 阅读 · 0 评论 -
python注释宏 # type
看torchvison源码时,发现如下注释宏:"# type"为python注释宏,添加该注释宏后,解释器会把被注释变量解释成对应类型,而不管变量本身类型。单值注释:a = 1 #type:lista.append() #这里我们.的时候会自动跳出list的内置方法多值注释:x,y = 1,2 #type:str 两个都是字符串 x,y = 1,2 #type:str,int 两个不同类型函数注释:def forward(self, x): # typ.原创 2020-10-24 16:20:35 · 2201 阅读 · 2 评论 -
python functools.lru_cache()装饰器
detectron2中logger模块中引用functools.lru_cache()装饰器,代码如下:@functools.lru_cache() # so that calling setup_logger multiple times won't add many handlersdef setup_logger( output=None, distributed_rank=0, *, color=True, name="detectron2", abbrev_name=No原创 2020-09-16 20:28:22 · 6515 阅读 · 1 评论 -
python addict模块-像类对象一样优雅的访问字典
项目地址:https://github.com/mewwts/addict/blob/master/README.mdaddict是一个Python模块,除了标准的项目语法外,还为您提供了字典,这些字典的值可以使用属性进行获取和设置。这意味着您不再需要编写这样的字典:body = { 'query':{ 'filtered':{ 'query':{ 'match':{ 'description':'add原创 2020-08-10 21:15:26 · 4538 阅读 · 0 评论 -
python typing模块的应用
1、介绍Python是一门弱类型的语言,很多时候我们可能不清楚函数参数类型或者返回值类型,很有可能导致一些类型没有指定方法,在写完代码一段时间后回过头看代码,很可能忘记了自己写的函数需要传什么参数,返回什么类型的结果,就不得不去阅读代码的具体内容,降低了阅读的速度,typing模块可以很好的解决这个问题自python3.5开始,PEP484为python引入了类型注解(type hints),typing模块的作用:类型检查,防止运行时出现参数和返回值类型不符合。 作为开发文档附加说明,方便使原创 2020-08-08 21:12:40 · 2040 阅读 · 1 评论 -
python functools下的partial模块应用
声明:文章仅作知识整理、分享,如有侵权请联系作者删除博文,谢谢!1、典型应用典型的,函数在执行时,要带上所有必要的参数进行调用。然后,有时参数可以在函数被调用之前提前获知。这种情况下,一个函数有一个或多个参数预先就能用上,以便函数能用更少的参数进行调用。import functoolsdef add(a, b): return a + badd(4, 2)6plus3 = functools.partial(add, 3)plus5 = functools.parti原创 2020-08-07 23:51:08 · 4350 阅读 · 3 评论