python
youandme520
这个作者很懒,什么都没留下…
展开
-
python 两个类实例之间的相互传递调用 PyQt5焦点控制
PyQt5焦点控制'''setFocus() 设置指定控件获取焦点setFocusPolicy(Policy) 设置焦点获取策略 Qt.TabFocus() 通过Tab键获取焦点 Qt.ClickFocus() 通过被单击获取焦点 Qt.StrongFocus() 可以通过上面两种方式获取焦点 Qt.NoFocus() 不能通过上面两种方式获取焦点clearFocus() 取消焦点FocusWidget() 获取子控件当前聚焦的控件...转载 2021-01-13 10:52:05 · 2168 阅读 · 0 评论 -
Python 3.x 连接MySql数据库
发现MySQLdb 模块还不支持 Python3.x,所以 Python3.x 如果想连接MySQL需要安装 pymysql 模块。pip 安装 pymysqlpip install -i https://mirrors.aliyun.com/pypi/simple/ pymysql由于Python统一了数据库连接的接口,所以 pymysql 和 MySQLdb 在使用方式上是类似的:pymysql.Connect()参数说明host(str): MySQL服务器地址.原创 2020-12-28 14:23:20 · 219 阅读 · 0 评论 -
pyqt 学习使用过中的问题收集(持续更新)
pyqt中对radioButton进行分组最近在 pyqt 的使用中需要使用radioButton 但是发现不会分组 于是查询了度娘,下面总结一下:我们需要对其分组,通常有两种选择,一种是BoxGroup,另一种是ButtonGroup。建议采用ButtonGroup,因为BowGroup会在界面上显示一个类似文本框的东西,而ButtonGroup没有任何痕迹。在布局Radio Button组件时也不用考虑ButtonGroup,直接将radio button加入相应的布局框架中sel...原创 2020-12-22 16:45:03 · 154 阅读 · 0 评论 -
pyqt5 如何在线程中更新窗口UI
pyqt5 如何在线程中更新窗口UI总所周知窗口UI 和 程序中生成的子线程是不同的两个线程,如果在子线程中更新窗体UI 就会报错:所以 需要解决这个问题,qt中有个叫信号的东西。可以通过信号(signal)来触发事件,传递消息建立信号变量//词句在窗内编写signal_ListView_set= QtCore.pyqtSignal(str)更新控件的函数 #线程更新ListView的工作函数 def update_listView(self,hosts_..原创 2020-12-21 15:48:39 · 3582 阅读 · 1 评论 -
Python VLC+PyQt5 读取视频音频流
下载,安装 VLC从http://download.videolan.org/pub/videolan/vlc/下载对应版本的VLC Portable文件原创 2020-12-18 15:52:07 · 3308 阅读 · 0 评论 -
python 实现ip扫描并显示
需求扫描设定网段内 有哪些ip 地址并显示出列表。使用关键模块subprocess模块来调用系统命令 ping MongoDB 来动态存储得到的数据安装subprocess,MongoDBpip3 install pymongo原创 2020-12-18 15:35:55 · 1012 阅读 · 0 评论 -
Python正则表达式去除字符串中的标点符号
import re# 只保留中文、大小写字母和阿拉伯数字reg = "[^0-9A-Za-z\u4e00-\u9fa5]"text = "<>\(*芸%芸^),,\\(-我@)&love=+《你》!【~我//""[们]】2{0}1.6~————、结/婚'吧::!这.!!_#??()个‘’“”¥$主|意()不。错……!"print(re.sub(reg, '', text))结果为:芸芸我love你我们2016结婚吧这个主意不错...转载 2020-12-14 21:52:59 · 4044 阅读 · 0 评论 -
正则表达式 re.compile() 相关
正则表达式的各种规则就不在此赘述了,以下介绍在python的re模块中怎样应用正则表达式re模块中包含一个重要函数是compile(pattern [, flags]) ,该函数根据包含的正则表达式的字符串创建模式对象。可以实现更有效率的匹配。比如:compile 函数 match 函数 search 函数 findall 函数 finditer 函数 split 函数 sub 函数 subn 函数在直接使用字符串表示的正则表达式进行search,match和findall操作时原创 2020-12-09 22:15:53 · 1461 阅读 · 0 评论 -
python3 字符串、十六进制字符串、数字、字节之间的转换
python3 ——字符串str、十六进制字符串str、数字int、字节byte 类型之间的转换字节转16进制的字符串 字节转数字 16进制字符串转数字 字符串转字节 字节转字符串 数字转字节字节转16进制的字符串‘S’对应的16进制数是 0X53字节转数字0x53 对应的十进制数是 83字符串转字节数字转字节...转载 2020-11-10 16:40:35 · 861 阅读 · 0 评论 -
python 多线程与队列的应用
Python多线程与Queue队列多线程在感官上类似于同时执行多个程序,虽然由于GIL的存在,在Python中无法实现线程的真正并行,但是对于某些场景,多线程仍不失为一个有效的处理方法:1,不紧急的,无需阻塞主线程的任务,此时可以利用多线程在后台慢慢处理;2,IO密集型操作,比如文件读写、用户输入和网络请求等,此时多线程可以近似达到甚至优于多进程的表现;多线程的基本使用不再赘述,以下语法便可轻松实现:def task(args1, args2): passThread(转载 2020-11-10 11:00:17 · 404 阅读 · 0 评论 -
python中threading.Event实现线程的暂停、恢复功能
EventsPython提供了Event对象用于线程间通信,它是由线程设置的信号标志,如果信号标志位真,则其他线程等待直到信号接触。Event对象实现了简单的线程通信机制,它提供了设置信号,清除信号,等待等用于实现线程间的通信。event = threading.Event() 创建一个event1 设置信号event.set()使用Event的set()方法可以设置Event对象内部的信号标志为真。Event对象提供了isSet()方法来判断其内部信号标志的状态。当使用event对象转载 2020-11-09 15:54:05 · 922 阅读 · 0 评论 -
pyqt5 ,实现串口调试助手
pyqt5 ,实现串口调试助手这个是串口调试助手的基础上开发控制云台的操作界面。还未全部做完后面会慢慢做完的。from PyQt5 import QtCore, QtGui, QtWidgetsfrom PyQt5.QtWidgets import QMessageBoxfrom PyQt5.QtGui import QIconfrom PyQt5.QtCore import QTimerimport timefrom WinControl import Ui_WinControl原创 2020-11-06 21:38:47 · 3778 阅读 · 3 评论 -
pyqt5 槽函数传递参数
内置槽函数是不允许传递参数的,这里有两种解决方法:方法一:使用lambda表达式button.clicked.connect(lambda:self.onButtonClick(1))这个时候就可以将数值1传递到所调用的方法中方法二:使用partial函数button.clicked.connect(partial(self.onButtonClick,1))这样也可以将值1传递给所调用的方法...转载 2020-11-06 20:35:44 · 4069 阅读 · 0 评论 -
PyQt5 多线程的一些实用例子
demo1 fromhttps://www.cnblogs.com/hhh5460/p/5175322.htmlfrom PyQt5.QtWidgets import QApplication, QLabel, QWidget, QGridLayoutfrom PyQt5.QtCore import QThread, QObject, pyqtSignal, pyqtSlotimport timeimport sysclass Worker(QObject): finished .转载 2020-11-06 20:30:37 · 767 阅读 · 0 评论 -
python 的串口通信
串口通信是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。串口是计算机上一种非常通用的设备通信协议。pyserial模块封装了python对串口的访问,为多平台的使用提供了统一的接口。安装pip3 install pyserial测试:两个串口转usp线对接后接入到PC USB口上,通过Python进行数据交互:简单串口程序实现:import ser..转载 2020-11-04 09:12:43 · 2958 阅读 · 0 评论 -
Pyqt5的使用 文件对话框的使用。
概述选取文件夹QFileDialog.getExistingDirectory() 选择文件QFileDialog.getOpenFileName() 选择多个文件QFileDialog.getOpenFileNames() 选择保存文件QFileDialog.getSaveFileName()python获取当前路径importos,sys使用sys.path[0]、sys.argv[0]、os.getcwd()、os.path.abspath(__file__)、os...转载 2020-10-14 13:30:19 · 1401 阅读 · 0 评论 -
pyQT5 学习使用 笔记 六 pyQt5+opencv 显示海康GIGE相机动态视频流
opencv 读取 海康GIGE相机视频流新项目中我们需要使用opencv读取海康威视的工业相机 MV-CA060-10GM 的视频流进行处理。那么首先我们要读取到相机的视频流,总所周知 opencv 读取视频流的办法就是使用 VideoCapture 函数 来读取。 但是经过多次测试,读取了文档和源代码 发现 opencv没有公版驱动可以和GIGE 协议的相机直接对接。那么怎么办呢?然后我想到了海康威视提供的SDK 开发包。在sdk里面翻找了一下 终于发现一批python的例程,所以说大公司就是.原创 2020-09-22 17:17:27 · 6994 阅读 · 29 评论 -
pyQT5 学习使用 笔记 五 opencv+Qt 在Qt UI中显示 opencv 图像。
前文中我们 了解到了 python 中 如何 使用 Qt 的 重要的 信号 与 槽的传递 和执行机制。这也是Qt的一个最重要的机制。了解了这个机制,那么我们可以做很多事情了, 其实 通过前面的种种学习我们也离目的越来越近。我的目的就是 通过 python 实现 opencv+Qt 联合编程。 原先用c++也是可以的,但是现在发现 远远没有 python 来的方便,快捷。闲话不多说,下面我们来看如何实现 opencv+Qt 在python中的联合编程的。...原创 2020-09-22 10:29:52 · 2896 阅读 · 0 评论 -
pyQT5 学习使用 笔记 四 PyQt5事件,信号和槽。
在这一部分的pyqt5笔记,我们将探讨PyQt5中的事件Event所有的GUI程序都是事件驱动的。事件主要由用户触发,但也可能有其他触发方式:例如网络连接、window manager或定时器。当我们调用QApplication的exec_()方法时会使程序进入主循环。主循环会获取并分发事件。在事件模型中,有三个参与者:事件源 事件对象 事件接收者事件源是状态发生变化的对象。它会生成事件。事件(对象)封装了事件源中状态的变动。事件接收者是要通知的对象。事件源对象将事件处理的工作交给事件接收转载 2020-09-18 11:39:30 · 698 阅读 · 0 评论 -
pyQT5 学习使用 笔记 三 Qt Designer的使用
总所周知Qt 有一个Qt Designer 工具来快速开发 Qt的UI 界面,那么 在python 里面可以使用Qt Designer吗 在前文中我们看到窗口都是 靠代码一点点敲出来的 这势必会增加程序开发的 难度。所以Qt Designer 是一个必要的工具,所以 python 中肯定也是有集成的,下面 我们就来学习如何在 python中 使用Qt Designer 工具。首先需要 安装PyQt5-tools 工具包。在cmd命令行中 键入pip install -i https://...转载 2020-09-17 17:28:41 · 1084 阅读 · 0 评论 -
pyQT5 学习使用 笔记 二 pyQt5的基本功能。
pyQt5 是一个集成度非常高的 python 工具包, 几句代码就可以生成一个小窗口例:import sysfrom PyQt5 import QtWidgets, QtCoreapp = QtWidgets.QApplication(sys.argv)widget = QtWidgets.QWidget()widget.resize(400, 100)widget.setWindowTitle("This is a demo for PyQt Widget.")widget.s原创 2020-09-17 14:48:33 · 644 阅读 · 0 评论 -
pyQT5 学习使用 笔记 一 安装pyQT5
之前已经学习过了QT 的 基本使用了解了 信号和槽 的机制。由于新项目需要跨平台,所以 在视觉开发包的选择上 选择了opencv-python,所幸 QT也有pyQT5 的包可以和 opencv-python 联合使用开发。废话不说了 开始安装吧。打开cmd命令行界面输入...原创 2020-09-17 13:06:52 · 501 阅读 · 0 评论 -
Python中的条件表达式,也称之为三元运算符,和c++中的条件运算符
今天在看别人的C++程序的时候遇到了一组用条件运算符 ? : 写成的代码,想改成python 发现 python中 没有 条件运算符。查了一下原来python中是使用条件表达式也就是三元预算符来实现下面是代码uchar p2 = (i == 0) ? 0 : *(p - dst.step + j);c++的? : 运算符通用格式如下:expression1 ? expressions : expression3如果 expreesion1为true 则整个条件表达式的值为expre原创 2020-09-05 17:48:09 · 280 阅读 · 0 评论 -
opencv-python 求两点间距离以及点到直线距离函数
求两点间距离/***** 求两点间距离*****/float getDistance(CvPoint pointO, CvPoint pointA){ float distance; distance = powf((pointO.x - pointA.x), 2) + powf((pointO.y - pointA.y), 2); distance = sqrtf(distance); return distance;}点到直线的距离:P到AB的距离原创 2020-09-02 21:26:57 · 7772 阅读 · 0 评论 -
python -- lambda表达式
lambda表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数。lambda所表示的匿名函数的内容应该是很简单的,如果复杂的话,干脆就重新定义一个函数了,使用lambda就有点过于执拗了。lambda就是用来定义一个匿名函数的,如果还要给他绑定一个名字的话,就会显得有点画蛇添足,通常是直接使用lambda函数。如下所示:add = lambda x, y : x+yadd(1,2) # 结果为3那么到底要如何使用lambda表达式呢?..转载 2020-08-25 12:41:33 · 156 阅读 · 0 评论 -
python 使用sorted方法对二维列表排序
list3 = [['1', '15', '8'], ['1', '14', '2'], ['1', '15', '9'], ['1', '14', '3'], ['1', '16', '0'], ['1', '15', '1'], ['1', '16', '2'], ['1', '15', '10'], ['1', '16', '3'], ['1', '15', '12']]def sort3(list1): #对数字列表排序 list2 = sorted(list1.转载 2020-08-25 12:33:10 · 2846 阅读 · 0 评论 -
python numpy 中 np.vstack()和np.hstack()
在这里我们介绍两个拼接数组的方法:np.vstack():在竖直方向上堆叠np.hstack():在水平方向上平铺import numpy as nparr1=np.array([1,2,3])arr2=np.array([4,5,6])print np.vstack((arr1,arr2)) print np.hstack((arr1,arr2)) a1=np.array([[1,2],[3,4],[5,6]])a2=np.array([[7,8],[9,10],[11,12转载 2020-08-21 12:06:56 · 4067 阅读 · 0 评论 -
skimage与opencv图片格式的相互转换
skimage是python的一个图像库,常常与matplotlib一起作为视频、图像类的基本库。而opencv作为非常流行的视觉库,在图像处理中使用非常常见,本篇介绍两种库的图像格式的相互转换skimage图像格式通道:RGB像素值:[0,1]Opencv图像格式通道:BGR像素值:[0,255]转换转换过程现封装如下:def skimage2opencv(src): src *= 255 src.astype(int) cv2.cvtCo转载 2020-08-11 11:09:19 · 751 阅读 · 0 评论 -
python 图像的细化(骨架抽取)
图像的细化主要是针对二值图而言所谓骨架,可以理解为图像的中轴,,一个长方形的骨架,是它的长方向上的中轴线,圆的骨架是它的圆心,直线的骨架是它自身,孤立点的骨架也是自身。骨架的获取主要有两种方法:(1)基于烈火模拟设想在同一时刻,将目标的边缘线都点燃,火的前沿以匀速向内部蔓延,当前沿相交时火焰熄灭,火焰熄灭点的结合就是骨架。(2)基于最大圆盘目标的骨架是由目标内所有内切圆盘的圆心组成我们来看看典型的图形的骨架(用粗线表示)细化的算法有很多种,但比较常用的算法是查表法转载 2020-08-10 17:28:36 · 3028 阅读 · 0 评论 -
【Python-opencv篇】 bitwise_and、bitwise_not等图像基本运算及掩膜
1.图像基本运算图像的基本运算有很多种,比如两幅图像可以相加、相减、相乘、相除、位运算、平方根、对数、绝对值等;图像也可以放大、缩小、旋转,还可以截取其中的一部分作为ROI(感兴趣区域)进行操作,各个颜色通道还可以分别提取及对各个颜色通道进行各种运算操作。总之,对于图像可以进行的基本运算非常的多,只是挑了些常用的操作详解。void add(InputArray src1, InputArray src2, OutputArray dst,InputArray mask=noArray(), int转载 2020-08-06 17:17:33 · 2894 阅读 · 0 评论 -
opencv 轮廓特征应用:按轮廓剪切图像ROI
有时我们在实际应用中会遇到要对 某个轮廓对象内的图像进行处理 时,我们需要把这部分图像单独提取出来,这是我们可以使用指定轮廓做图像剪切的 ROIc++实现void imgContoursROI()//轮廓roi{ //1.查找轮廓的预处理 Mat srcImg = imread("D:/ImageTest/convex.png"); Mat copyImg = srcImg.clone();// GaussianBlur(srcImg,srcImg,Si...原创 2020-08-06 16:35:34 · 4518 阅读 · 0 评论 -
opencv 查找并绘制轮廓
一个轮廓一般对应一系列的点, 也就是图像中的一条曲线。其表示方法可能根据不同的情况而有所不同。 在opencv中可以用findContours()函数从二值图像查找轮廓findContours()函数用于在二值图像中原创 2020-08-05 17:08:03 · 816 阅读 · 0 评论 -
python numpy中的随机数模块
numpy.random模块中提供啦大量的随机数相关的函数。1 numpy中产生随机数的方法 1)rand() 产生[0,1]的浮点随机数,括号里面的参数可以指定产生数组的形状 2)randn() 产生标准正太分布随机数,参数含义与random相同 3)randint() 产生指定范围的随机数,最后一个参数是元祖,他确定数组的形状import numpy as npfrom numpy import random as nr #只显示小数点后两位np.set_pr转载 2020-08-05 09:06:21 · 705 阅读 · 0 评论 -
opencv 的 图像 变换 python 实现
图像变换的基本模型变换模型是指根据待匹配图像与背景图像之间几何畸变的情况,所选择的能最佳拟合两幅图像之间变化的几何变换模型。可采用的变换模型有如下几种:刚性变换、仿射变换、透视变换和非线形变换等,如下图:刚体变换(图像旋转) 如果一幅图像中的两点间的距离变换到另一幅图像中后任然保持不变,则这种变换称为刚体变换(Rigid Transform).刚体变换仅局限于平移,旋转和镜像. 在二位控件中,点(x,y)经过刚体变换到点(x',y')的变换公式为: ...原创 2020-08-01 16:30:42 · 936 阅读 · 0 评论 -
opencv remap() python 的实现 以及遇到的疑问。
opencv中重映射函数 remap() 的python实现dst=cv.remap(src, map1, map2, interpolation[, dst[, borderMode[, borderValue]]])Parameterssrc Source image. map1 类型为CV_16SC2、CV_32FC1或CV_32FC2的(x,y)点或x值的第一个映射。有关将浮点表示转换为定点的详细信息,请参阅convertMaps。 map2 第二个y值的映射分原创 2020-08-01 09:10:24 · 1199 阅读 · 0 评论 -
python 创建与遍历List二维列表
python 创建List二维列表lists = [[] for i in range(3)] # 创建的是多行三列的二维列表for i in range(3): lists[0].append(i)for i in range(5): lists[1].append(i)for i in range(7): lists[2].append(i)print("lists is:", lists)# lists is: [[0, 1, 2], [0, 1, 2, 3,转载 2020-07-28 21:27:30 · 1197 阅读 · 0 评论 -
python opencv 读取图像信息
读取图像高度使用cv2.imread()函数可以读取图片的高,宽,通道数。奇异返回值的第一个值就是图像的高度。具体代码如下:import cv2 as cvimport numpy as npim=cv.imread('fruit.png')height=im.shape[0]cv.imshow('origin image',im)print(im.shape)print('height is:',height)cv.waitKey()(477, 686, 3)heigh原创 2020-07-28 15:08:03 · 1326 阅读 · 0 评论 -
Python中shape简易用法
通过安装导入numpy库,矩阵(ndarray)的shape属性可以获取矩阵的形状(例如二维数组的行列),获取的结果是一个元组,因此相关代码如下:import numpy as npx = np.array([[1,2,5],[2,3,5],[3,4,5],[2,3,6]])#输出数组的行和列数print x.shape #结果: (4, 3)#只输出行数print x.shape[0] #结果: 4#只输出列数print x.shape[1] #结果: 3...原创 2020-07-28 15:00:52 · 587 阅读 · 0 评论 -
opencv 凸包convexHull、道格拉斯-普克算法Douglas-Peucker algorithm、approxPloyDP 函数
凸包convexHull、道格拉斯-普克算法Douglas-Peucker algorithm、approxPloyDP 函数道格拉斯-普克算法(Douglas–Peucker algorithm),亦称为拉默-道格拉斯-普克算法(Ramer–Douglas–Peucker algorithm),这个算法最初由拉默(Urs Ramer)于1972年提出,1973年道格拉斯(David Douglas)和普克(Thomas Peucker)二人又独立于拉默提出了该算法。我们知道,一条曲线上包含着无数...转载 2020-07-19 19:36:45 · 1682 阅读 · 0 评论 -
cv2.drawContours 在程序中报error: (-215:Assertion failed) npoints异常的处理方法
在学习 opencv 过程中 遇到一个cv2.drawContours 报error: (-215:Assertion failed) npoints异常的问题检查程序之后没有发现异常。问了 度娘后也没有找到原因,最后找到了一个解决方法:def ContoursDemo2(): """边界框,最小矩形区域和最小闭圆的轮廓""" img=cv2.pyrDown(cv2.imread("test.bmp",cv2.IMREAD_GRAYSCALE)) ret,th..原创 2020-07-18 21:12:45 · 2031 阅读 · 0 评论