![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python
瑟寒凌风
这个作者很懒,什么都没留下…
展开
-
OpenCV实现图片人脸检测
本文使用python实现import cv2 as cvimport numpy as npdef face_detect_demo(src): gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY) face_detector = cv.CascadeClassifier("D:/Python/Python38/Lib/site-packages/cv2/data/haarcascade_frontalface_alt_tree.xml")原创 2020-06-21 01:38:37 · 577 阅读 · 0 评论 -
OpenCV的分水岭算法
本文使用python实现import cv2 as cvimport numpy as npdef watershed_demo(src): print(src.shape) blurred = cv.pyrMeanShiftFiltering(src, 10, 100) # 去噪声 gray = cv.cvtColor(blurred, cv.COLOR_BGR2GRAY) # 转为灰度 ret, binary = cv.threshold(g原创 2020-06-20 18:15:51 · 296 阅读 · 0 评论 -
OpenCV的图像腐蚀膨胀和开闭操作
本文使用python实现图像腐蚀import cv2 as cvimport numpy as npdef erode_demo(image): # 图像腐蚀 print(image.shape) gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU) # 图像二值化 cv原创 2020-06-18 00:10:31 · 595 阅读 · 0 评论 -
OpenCV的对象测量
import cv2 as cvimport numpy as npdef measure_object(image): gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) # RGB转灰度 ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU) # 二值化 print("threshold value : %s"%ret) c.原创 2020-06-12 19:16:40 · 457 阅读 · 0 评论 -
OpenCV的轮廓发现
import cv2 as cvimport numpy as npdef contours_demo(image): gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU) # 图像二值化 ''' def threshold(src: Any, # 源图像,可以为8位的灰度.原创 2020-06-09 01:00:20 · 449 阅读 · 0 评论 -
OpenCV的霍夫曼圆检测
import cv2 as cvimport numpy as npdef detect_circles_demo(image): dst = cv.pyrMeanShiftFiltering(image, 10, 100) # 均值偏移滤波 ''' def pyrMeanShiftFiltering(src: Any, # 输入的8-比特,3-信道图象 sp: Any, # 空间窗的半径 .原创 2020-06-08 23:49:39 · 1304 阅读 · 0 评论 -
OpenCV的霍夫曼直线检测
import cv2 as cvimport numpy as npdef line_detection(image): gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) edges = cv.Canny(gray, 50, 150, apertureSize=3) lines = cv.HoughLines(edges, 2, np.pi/180, 200) ''' def HoughLines(image: Any.原创 2020-06-08 01:39:03 · 416 阅读 · 2 评论 -
OpenCV的Canny边缘提取
import cv2 as cvimport numpy as npdef edge_demo(image): blurred = cv.GaussianBlur(image, (3, 3), 0) # 高斯模糊,平滑处理原图像降噪 gray = cv.cvtColor(blurred, cv.COLOR_BGR2GRAY) # 转为灰度 xgrad = cv.Sobel(gray, cv.CV_16SC1, 1, 0) # x的梯度 ygra.原创 2020-06-07 02:41:17 · 621 阅读 · 3 评论 -
OpenCV关于图像梯度
Sodel算子import cv2 as cvimport numpy as npdef sobel_demo(image): # Sobel算子 grad_x = cv.Sobel(image, cv.CV_32F, 1, 0) # 求x方向上的梯度 ''' def Sobel(src: Any, # 原图像 ddepth: Any, # 图像深度 dx: Any,原创 2020-06-06 18:46:38 · 293 阅读 · 0 评论 -
OpenCV图像金字塔
本文使用python实现。图像金字塔import cv2 as cvimport numpy as npdef pyramid_demo(image): # 图像金字塔 level = 3 temp = image.copy() pyramid_images = [] for i in range(level): dst = cv.pyrDown(temp) ''' def pyrDown(src: An原创 2020-06-06 00:38:39 · 257 阅读 · 0 评论 -
OpenCV的图像二值化
本文使用python实现。全局阈值import cv2 as cvimport numpy as npdef threshold_demo(image): # 全局阈值 gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU) ''' # 函数 cvThreshold 对单通原创 2020-06-05 01:14:44 · 544 阅读 · 0 评论 -
OpenCV模板匹配
本文使用python实现。OpenCV中模板匹配使用的公式如下函数(1):平方差匹配法:该方法采用平方差来进行匹配;最好的匹配值为0;匹配越差,匹配值越大。函数(2):归一化平方差匹配法函数(3):相关匹配法:该方法采用乘法操作;数值越大表明匹配程度越好。函数(4):归一化相关匹配法函数(5):相关系数匹配法:1表示完美的匹配;-1表示最差的匹配。函数(6):归一化相关系数匹配法代码如下import cv2 as cvimport numpy as npdef te原创 2020-06-04 01:36:30 · 1545 阅读 · 0 评论 -
OpenCV的直方图
本文使用python实现图像直方图图像直方图是不同像素值范围的像素个数统计图:# matplotlib.pyplot.hist()函数def hist(x: Any, # 输入的数据 bins: Any = None, # 条形数 range: Any = None, # x轴的范围,范围之外的将被舍弃,数组元组类型(起,终)原创 2020-06-01 16:16:44 · 923 阅读 · 0 评论 -
OpenCV的双边模糊和均值漂移
双边模糊双边滤波是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折衷处理,同时考虑空域信息和灰度相似性,达到保边去噪的目的。双边滤波器之所以能够做到在平滑去噪的同时还能够很好的保存边缘,是由于其滤波器的核由两个函数生成:空间域核和值域核。空间域核为模板窗口的其他系数的坐标;为模板窗口的中心坐标点;为高斯函数的标准差。空间域核由像素位置欧式距离决定的模板权值:由的计算公式可知,它是计算临近点到中心点临近程度,因此定义域核是用于衡量空间临近的程度。使用该公式生成的...原创 2020-06-01 01:07:36 · 774 阅读 · 0 评论 -
OpenCV的像素运算
本文代码使用python实现import cv2 as cvimport numpy as np# 像素相加def add_demo(m1, m2): dst = cv.add(m1, m2) cv.imshow("add_demo", dst) # 显示图片# 像素相减def subtract_demo(m1, m2): dst = cv.subtract(m1, m2) cv.imshow("subtract_demo", dst)# 像素原创 2020-05-29 23:43:51 · 670 阅读 · 0 评论 -
OpenCV的高斯模糊
本文使用python实现本文的文字说明全在代码的注解里面,不要担心代码看不懂import cv2 as cvimport numpy as npdef clamp(pv): if pv > 255: return 255 elif pv < 0: return 0 else: return pvdef gaussian_noise(image): # 高斯噪声 h, w, c = image原创 2020-05-31 01:04:55 · 966 阅读 · 0 评论 -
OpenCV实现模糊操作
模糊操作的基本原理:1.基于离散卷积,2.定义好每个卷积核,3.不同卷积核得到不同的卷积效果,4.模糊是卷积的一种表象import cv2 as cvimport numpy as npdef blur_demo(image): # 均值模糊 dst = cv.blur(image, (5, 5)) # (5, 5)模糊参数,第一个5是水平模糊,第二个5是垂直模糊 cv.imshow("blur_demo", dst)def median_demo(image)原创 2020-05-30 18:17:28 · 620 阅读 · 0 评论 -
OpenCV的色彩空间实例
本文使用python实现。色彩空间常用的就如下几种:RGB 、HSV 、HSI、YCrCb(YUV)RGB色彩就是常说的光学三原色,R代表Red(红色),G代表Green(绿色),B代表Blue(蓝色)。自然界中肉眼所能看到的任何色彩都可以由这三种色彩混合叠加而成。HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型。HSI〔Hue-Saturation-Intensity(Lightnes.原创 2020-05-28 18:43:54 · 544 阅读 · 0 评论 -
OpenCV打开图片并获取图片信息
本文使用python语言实现,话不多说,直接上代码def get_image_info(image): print(type(image)) # <class 'numpy.ndarray'> image的类型 print(image.shape) # (496, 751, 3) 形状:高496,宽751,3通道 print(image.size) # 1117488 496x751x3 print(image.dtype) # uint8 3通道原创 2020-05-28 00:36:47 · 2488 阅读 · 1 评论 -
python的列表和元组的比较
元组是不可变的python对象,存储在固定的一块内存里.列表是可变的python对象,需要两块存储空间,一块固定用来存储实际的列表数据,一块可变的空间用于扩展结论:元组创建和访问要比列表快,但是不如列表灵活...原创 2019-06-06 01:14:53 · 346 阅读 · 0 评论 -
python中的高阶函数
# 高阶函数# 高阶函数是至少满足下列一个条件的函数:# 1.接受一个或多个函数作为输入# 2.输出一个函数print(sum([1, 2, 3])) # 6 sum()是python自己的求和函数b = sum # 这里用一个b去等于sumprint(b([1, 2, 3...原创 2019-06-17 17:07:33 · 138 阅读 · 0 评论 -
python中lambda函数----匿名函数
# lambda匿名函数def test(x, y): return x + 2 * yf = lambda x, y: x + 2 * y # 匿名函数,必须写成一行print(test(1, 2)) # 5print(f(1, 2)) ...原创 2019-06-17 17:23:24 · 159 阅读 · 0 评论 -
python中列表解析
# 列表解析a = [1, 2, 3, 4]# b = [2, 3, 4, 5]b = [item for item in a] # 通过for循环将a中的元素取出来放在item中,并将item放在列表b中print(b) # [1, 2, 3, 4] 元素和a一模一样b1 = [item + 1...原创 2019-06-17 17:46:37 · 538 阅读 · 0 评论 -
python中map()和reduce()
# map()是python内置的高阶函数# 它接收一个函数f和一个list,并通过把函数f依次作用在list的每个元素上,# 得到一个新的list并返回# reduce()函数也是python内置的一个高阶函数# reduce()函数接收的一个参数和map()类似,一个函数f,一个list,# 但行为和map()不同,reduce()传入的函数f必须接收两个参数,# re...原创 2019-06-17 18:21:22 · 1155 阅读 · 0 评论 -
python中filter()高阶函数
# filter()函数是python内置的另一个有用的高阶函数# filter()函数接收一个函数f和一个list,# 这个函数f的作用是对每个元素进行判断,返回True或False# filter()根据判断结果自动过滤掉不符合条件的元素# 返回由符合条件元素组成的新lista = [1, 2, 3, 4, 5, 6]b = filter(lambda x: x % 2 ...原创 2019-06-17 18:42:36 · 9240 阅读 · 3 评论 -
python中try-except处理异常
# 异常的使用a = [1, 2, 3, 4, 5, 6, 0, 8, '22']# b = [item for item in a if 100 % item == 0]# print(b) # 直接运行报错ZeroDivisionError: integer division or modulo by z...原创 2019-06-18 12:09:01 · 864 阅读 · 0 评论 -
python中自定义异常和assert,else,finally
class MyException(Exception): # 自定义异常类,继承自Exception pass# raise MyException("这是用户定义的异常") # 触发自定义异常try: # 捕捉异常 ...原创 2019-06-18 12:55:24 · 632 阅读 · 0 评论 -
python中序列化对象
# 序列化对象p1import pickle # 内置库class People: def __init__(self, name, age): self.name = name self.age = age def sayhi(self): print("Hi...原创 2019-06-17 16:49:31 · 1753 阅读 · 0 评论 -
python中读写二进制文件
# f = open("test4.txt", 'w')## f.write(b'hello world') # TypeError: write() argument must be str, not bytes## f.close()f = open("test4.txt", 'wb') # 二进制写模...原创 2019-06-17 16:20:32 · 13969 阅读 · 0 评论 -
python集合的基本操作
s = {1, 2, 3, 4}s.add(5) # 添加元素5到集合,如果集合中存在5,该操作无效,不会报错print(s) # {1, 2, 3, 4, 5}s.remove(5) # 从集合s中删除元素5,如果删除的元素5不在集合中,会报错:KeyE...原创 2019-06-07 23:23:26 · 202 阅读 · 0 评论 -
python的集合的创建和访问
a = {'a', 'b', 'c'} # 这是一个集合,集合是只有key的字典print(type(a)) # <class 'set'> a的类型是一个集合b = { 'a': 1, 'b': 2, 'c': 3}t = 'c' in a # t...原创 2019-06-07 23:22:47 · 2665 阅读 · 0 评论 -
python中递归的使用
# 实现n! n的阶乘def test(n): # 用循环实现n的阶乘 result = 1 for item in range(1, n+1): result *= item return resultprint(test(6)) # 输...原创 2019-06-12 23:03:47 · 2095 阅读 · 0 评论 -
python中参数默认值简例
# 参数默认值只能放在最后的参数上def test(a, b=False): # b带默认值 if b: return a else: return a*aprint(test(a=2)) # 输出:4print(test(a=2, b=True)) # 输出:2# 如果有两个参数拥有默...原创 2019-06-12 22:50:38 · 3271 阅读 · 0 评论 -
python中字典的基本操作
d = { 'Name': 'Jack', 'Age': 9, 'Grade': 5,}print(d['Name']) # 输出结果:Jack(该写法如果字典里没有Name这个key的value,程序会报错)print(d.get('Name')) # 输出结果:jack(如果字典里没有Name这个key的value,程序会输出None,而不会...原创 2019-06-06 01:16:14 · 255 阅读 · 0 评论 -
python中字典的创建和访问
# 字典的创建a = { 1: 'a', 2: 'b', '3': 'c'}# 作为字典key,必须是不可改变的数据类型l1 = [1, 2, 3]b = { l1: 1 # 列表不能作为字典的key}t1 = (1, 2, 3)l1 = [1, 2, 3]c = { t1...原创 2019-06-06 01:15:40 · 949 阅读 · 0 评论 -
python中元组的基本操作
tuple1 = (9, 1, -4, 3, 7, 11, 3, 9, 0, 9)print('tuple1的长度 = ', len(tuple1)) # tuple1的长度 = 10print('tuple1里的最大值 = ', max(tuple1)) # tuple1里的最...原创 2019-06-06 01:14:13 · 710 阅读 · 0 评论 -
python中元组的创建和访问
# 元组的创建a = (1, 2, 3)b = 1,c = [1, 2, 3], # 注意逗号print(a, type(a)) # (1, 2, 3) <class 'tuple'>print(b, type(b)) # (1,) <class 'tuple'>print(c, type...原创 2019-06-06 01:13:30 · 2768 阅读 · 0 评论 -
python列表的基本操作
列表的基本操作获取列表的一些基本信息 list1 = [9, 1, -4, 3, 7, 11, 3] # print('list1的长度=', ) print('list1的长度=', len(list1)) # list1的长度= 7 # print('list1里的最大值=', ) ...原创 2019-06-06 01:12:45 · 388 阅读 · 0 评论 -
python的列表和元组
列表和元组列表: a = [1, 2, 3] # 列表中的元素可以是任意类型,如下 b = [1, 'abc', 2.0, ['a', 'b', 'c']] # 该列表元素分别为整型,字符串,浮点型,列表类型 print(b) ...原创 2019-06-06 01:11:19 · 78 阅读 · 0 评论 -
python的bool类型
布尔型bool命令行输入 a = True b = False type(a) # 结果为:<class 'bool'> type(b) # 结果为:<class 'bool'> 空值 a = ''...原创 2019-06-06 01:09:19 · 6422 阅读 · 0 评论