基本函数调用命令(python+opencv)
- 格式:docx
- 大小:43.89 KB
- 文档页数:17
python执行函数的九种方法在Python中,可以使用九种不同的方法来执行函数。
下面将会逐一介绍这九种方法,并给出示例代码。
1.直接调用函数名:最常见的方法是直接使用函数名来调用函数。
这是执行函数的最基本的方式。
例如:```pythondef say_hello(:print("Hello, World!")say_hell```2. 使用括号调用函数:在Python中,函数调用可以通过在函数名后面加上一对括号来完成。
例如:```pythondef say_hello(:print("Hello, World!")say_hello```3.使用参数调用函数:函数可以接受参数,我们可以使用参数来调用函数。
例如:```pythondef greet(name):print("Hello, " + name + "!")greet("Alice")```4.使用默认参数调用函数:函数可以使用默认参数,如果没有传递参数,函数将使用默认值。
例如:```pythondef greet(name="World"):print("Hello, " + name + "!")greet( # 输出 "Hello, World!"greet("Alice") # 输出 "Hello, Alice!"```5.使用关键字参数调用函数:函数参数可以使用关键字的方式进行赋值,这样可以指定特定的参数而不用考虑参数的顺序。
例如:```pythondef greet(name="World", greeting="Hello"):print(greeting + ", " + name + "!")greet( # 输出 "Hello, World!"greet(greeting="Hi") # 输出 "Hi, World!"greet("Alice", greeting="Hi") # 输出 "Hi, Alice!"```6.以列表或元组的形式传递参数:如果函数需要接受多个参数,并且这些参数以列表或元组的形式传递,我们可以使用"*"操作符来解压参数。
Python中的OpenCV是一个强大的计算机视觉库,而imshow函数则是OpenCV中用于显示图像的重要函数之一。
本文将从imshow函数的基本用法、参数说明、常见问题及解决方法等方面进行详细介绍,希望能够帮助读者更好地理解和使用这一函数。
1. imshow函数的基本用法在使用imshow函数之前,首先需要导入OpenCV库,并加载需要显示的图像。
加载图像的代码通常为:```pythonimport cv2image = cv2.imread('image.jpg')```加载完成图像后,就可以使用imshow函数显示图像了。
imshow函数的基本用法如下:```pythoncv2.imshow('image', image)cv2.waitKey(0)cv2.destroyAllWindows()```其中,'image'是窗口的名称,可以自定义。
image是需要显示的图像。
cv2.waitKey(0)是一个键盘绑定函数,参数为0表示无限等待用户的键盘输入。
cv2.destroyAllWindows()可以用来关闭所有的窗口。
通过以上代码,就可以在屏幕上显示加载的图像了。
2. imshow函数的参数说明imshow函数有两个参数,第一个参数是窗口的名称,第二个参数是需要显示的图像。
在使用imshow函数时,还可以使用一些附加参数进行进一步的设置,如调整窗口的大小、窗口的位置等。
具体的参数说明可以参考OpenCV官方文档。
3. 常见问题及解决方法在使用imshow函数时,可能会遇到一些常见的问题,下面罗列了一些常见问题及对应的解决方法:1) 图像无法显示:这个问题通常是由于图像路径错误或图像加载失败所致。
可以通过检查图像路径是否正确、确认图像是否加载成功来解决。
2) 窗口无响应:有时候在显示图像的窗口中会出现无响应的情况,这可能是因为程序在等待键盘输入而导致的。
python调用函数的方法Python调用函数的方法有很多种,下面将介绍一些常用的方法。
1.通过函数名直接调用:这是最基本的调用函数的方式,直接通过函数名加上括号的方式调用函数。
例如:```pythondef hello(:print("Hello, World!")hello( # 调用hello函数```2.将函数赋值给一个变量:在Python中,函数也可以被赋值给变量,就像赋值给一个普通的变量一样。
通过将函数赋值给一个变量,再通过变量名加上括号的方式调用函数。
例如:```pythondef hello(:print("Hello, World!")greet = hello # 将hello函数赋值给greet变量greet( # 调用greet变量对应的函数```3.作为参数传递给其他函数:Python中函数可以作为参数传递给其他函数。
例如:```pythondef add(x, y):return x + ydef execute(func, x, y):result = func(x, y)print(result)execute(add, 2, 3) # 将add函数作为参数传递给execute函数,并传入其他参数```4.使用lambda函数:lambda函数是一种匿名函数,可以在需要的地方定义和调用函数,非常简洁。
例如:```pythonadd = lambda x, y: x + yprint(add(2, 3)) # 调用lambda函数```5.通过模块导入函数:在Python中,可以将函数定义放在一个模块中,然后通过导入模块的方式调用函数。
例如,假设有一个名为`my_module.py`的模块,其中定义了一个名为`hello`的函数,可以通过以下方式导入并调用该函数:```pythonimport my_modulemy_module.hello( # 调用导入的模块中的hello函数```6.使用`from ... import`导入函数:除了导入整个模块,也可以只导入模块中的特定函数。
Python函数调用规则1. 概述函数是Python编程中非常重要的概念,它们可以将一段代码封装起来,通过调用函数来执行代码,提高代码的可读性和重用性。
本文将详细介绍Python函数的调用规则,包括函数的定义、函数的调用方式、函数参数的传递等。
2. 函数的定义在Python中,使用关键字def来定义函数,语法如下:def function_name(parameters):"""函数的文档字符串"""# 函数体return result•function_name是函数的名称,遵循标识符的命名规则;•parameters是函数的参数列表,多个参数之间用逗号分隔;•"""函数的文档字符串"""用于描述函数的功能和使用方法,可选;•函数体是一段被缩进的代码块,用于定义函数的实现逻辑;•return语句用于返回函数的结果,可选。
3. 函数的调用方式在Python中,可以通过以下几种方式来调用函数:(1)直接调用函数定义完成后,可以直接通过函数名加括号的方式来调用函数,参数传递在括号中进行,如:result = function_name(arg1, arg2, ...)调用时,需要将对应的参数传递给函数,可以有多个参数,用逗号隔开。
(2)赋值调用可以将函数赋值给一个变量,然后通过该变量调用函数,如:func = function_nameresult = func(arg1, arg2, ...)此时,func可以作为一个函数对象来进行调用。
(3)作为参数传递Python中的函数是一等对象(first-class object),可以作为参数传递给其他函数,如:def func1():print("Hello")def func2(func):func()func2(func1) # 输出:Hello在上述示例中,func2函数接收一个函数参数func,然后调用该函数。
python中opencv的用法
OpenCV 是一个开源的计算机视觉库,广泛应用于图像处理、视频分析、人脸识别等领域。
在 Python 中使用 OpenCV,可以通过以下步骤进行:
1. 安装 OpenCV:首先需要在系统中安装 OpenCV。
可以使用 pip 命令进行安装,例如:
```
pip install opencv-python
```
2. 导入 OpenCV 模块:在 Python 代码中,可以使用以下语句导入 OpenCV 模块:
```python
import cv2
```
3. 加载图像:OpenCV 提供了多种加载图像的方法,其中最常用的是使用 cv2.imread()函数。
该函数接受一个字符串参数,表示图像的路径,并返回一个代表图像的矩阵。
```python
image = cv2.imread('image.jpg')
```
4. 操作图像:OpenCV 提供了丰富的图像操作函数,例如:
- 改变图像大小:使用 cv2.resize()函数。
- 翻转图像:使用 cv2.flip()函数。
- 旋转图像:使用 cv2.rotate()函数。
- 提取图像特征:使用 cv2.Canny()函数。
5. 保存图像:使用 cv2.imwrite()函数可以将图像保存到文件中。
以上是 OpenCV 在 Python 中的基本用法,你可以根据实际需求进一步学习和使用OpenCV 中的其他函数。
opencv库常⽤函数常⽤opencv函数:1、cv2.line():画线——参数依次为:图⽚路径,起点和终点坐标值,颜⾊(rgb),线条宽度(像素)2、dst = cvtColor(src,code,dst=None,dstCn=None):颜⾊空间转换函数——参数依次为(原图像,color转化代码,输出图像,输出通道), 返回转换后的图像3、ret, dst = cv2.threshold(src, thresh, maxval, type):固定阈值⼆值化——src:输⼊图,只能输⼊单通道图像,通常来说为灰度图dst:输出图thresh:阈值maxval:当像素值超过了阈值(或者⼩于阈值,根据type来决定),所赋予的值type:⼆值化操作的类型,包含以下5种类型: cv2.THRESH_BINARY; cv2.THRESH_BINARY_INV; cv2.THRESH_TRUNC; cv2.THRESH_TOZERO;cv2.THRESH_TOZERO_INV4、cv2.findContours(image, mode, method[, contours[, hierarchy[, offset ]]]) :查找检测物体的轮廓opencv2返回两个值:contours:hierarchy。
注:opencv3会返回三个值,分别是img, countours, hierarchy参数:第⼀个参数是寻找轮廓的图像;第⼆个参数表⽰轮廓的检索模式,有四种(本⽂介绍的都是新的cv2接⼝):cv2.RETR_EXTERNAL 表⽰只检测外轮廓cv2.RETR_LIST 检测的轮廓不建⽴等级关系cv2.RETR_CCOMP 建⽴两个等级的轮廓,上⾯的⼀层为外边界,⾥⾯的⼀层为内孔的边界信息。
如果内孔内还有⼀个连通物体,这个物体的边界也在顶层。
cv2.RETR_TREE 建⽴⼀个等级树结构的轮廓。
第三个参数method为轮廓的近似办法cv2.CHAIN_APPROX_NONE 存储所有的轮廓点,相邻的两个点的像素位置差不超过1,即max(abs(x1-x2),abs(y2-y1))==1cv2.CHAIN_APPROX_SIMPLE 压缩⽔平⽅向,垂直⽅向,对⾓线⽅向的元素,只保留该⽅向的终点坐标,例如⼀个矩形轮廓只需4个点来保存轮廓信息cv2.CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOS 使⽤teh-Chinl chain 近似算法返回值cv2.findContours()函数返回两个值,⼀个是轮廓本⾝,还有⼀个是每条轮廓对应的属性。
python如何使⽤摄像头(opencv)1如何使⽤opencv 调取摄像头import cv2#采⽤opencv的库函数去调⽤摄像头import timecap=cv2.VideoCapture(0)#cv2.VideoCapture(0)代表调取摄像头资源,其中0代表电脑摄像头,1代表外接摄像头(usb摄像头)cap.set(3,900)cap.set(4,900)# cap.set()设置摄像头参数:3:宽 4:⾼while(cap.isOpened()):#cap.isOpened()返回布尔值,来查看是否摄像头初始化成功ret_flag, Vshow = cap.read()#cap.read()返回两个值,第⼀个值为布尔值,如果视频正确,那么就返回true, 第⼆个值代表图像三维像素矩阵cv2.imshow('Capture', Vshow)k=cv2.waitKey(1)#重中之重,这个必须有,这个获取字母,但是⼀直不能通过,即等待⼀定时间内的⽤户反馈,如果⽤户没有按下按键,则继续等待循环。
Waitkey(0):⽆限等待按键Waitkey(1):等待1毫秒,没有继续刷新Waitkey(100):等待⽤户100毫秒,没有继续刷新且实现这个按下q的功能,必须是在opencv窗⼝中才能实现,⽽不是在terminal中if k==ord('s'):print('222222')print(cap.get(3))print(cap.get(4))elif k==ord('q'):print('完成')breakprint('摄像头捕获成功')# pass# time.sleep(1)cap.release()cv2.destoryAllWindows()代码:import cv2import timecap=cv2.VideoCapture(0) cap.set(3,900)cap.set(4,900)while(cap.isOpened()):ret_flag, Vshow = cap.read() cv2.imshow('Capture', Vshow) k=cv2.waitKey(1)if k==ord('s'):print('222222')print(cap.get(3))print(cap.get(4))elif k==ord('q'):print('完成')break#print('摄像头捕获成功')# pass# time.sleep(1)cap.release()cv2.destoryAllWindows()OpenCV-Python(1)在Python中使⽤OpenCV进⾏⼈脸检测OpenCV是如今最流⾏的计算机视觉库,⽽我们今天就是要学习如何安装使⽤OpenCV,以及如何去访问我们的摄像头。
调用开运算和闭运算的函数开运算(Opening)和闭运算(Closing)是形态学图像处理中的两个基本操作。
在图像处理中,它们常用于去噪、平滑图像、填充空洞等应用。
开运算是先进行腐蚀(Erosion)操作,再进行膨胀(Dilation)操作。
它能够消除小的对象、填充小的空洞,并且能够保持对象的形状。
闭运算是先进行膨胀(Dilation)操作,再进行腐蚀(Erosion)操作。
它能够填充小的空洞、平滑对象的边界,并且能够保持对象的形状。
下面是Python中使用OpenCV库进行开运算和闭运算的函数调用示例:pythonCopy codeimport cv2import numpy as npdef opening(image, kernel_size):# 创建结构元素(卷积核)kernel = cv2.getStructuringElement(cv2.MORPH_RECT, kernel_size)# 进行开运算opened = cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel)return openeddef closing(image, kernel_size):# 创建结构元素(卷积核)kernel = cv2.getStructuringElement(cv2.MORPH_RECT, kernel_size)# 进行闭运算closed = cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernel)return closed# 载入图像image = cv2.imread(’image.jpg’, 0) # 以灰度图像方式读取# 设置卷积核大小(结构元素大小)kernel_size = (5, 5)# 调用开运算函数opened_image = opening(image, kernel_size)# 调用闭运算函数closed_image = closing(image, kernel_size)# 显示结果cv2.imshow(’Original Image’, image)cv2.imshow(’Opened Image’, opened_image)cv2.imshow(’Closed Image’, closed_image)cv2.waitKey(0)cv2.destroyAllWindows()在上述示例中,opening()函数接受一个图像和一个卷积核大小作为输入,并返回进行开运算后的图像。
python函数的基本用法一、Python函数的定义在Python中,函数是一段可重用的代码块,用于执行特定任务。
定义一个函数需要使用关键字“def”,后面紧跟着函数名和括号。
如果函数需要参数,则在括号内指定参数名。
如果不需要参数,则可以省略括号。
例如,下面是一个简单的Python函数定义:```def hello():print("Hello, World!")```二、Python函数的调用定义好一个函数之后,可以通过调用该函数来执行其中的代码。
调用一个函数只需要使用其名称,并在名称后面加上括号。
例如,我们可以通过以下方式来调用上面定义的hello()函数:```hello()```三、Python函数的参数在Python中,可以向函数传递参数以便于执行特定任务。
在定义一个函数时,可以指定该函数所需的参数数量和类型。
例如,下面是一个带有两个参数的简单Python函数:```def add_numbers(x, y):result = x + yreturn result```在这个例子中,add_numbers()函数接受两个参数x和y,并返回它们之和。
四、Python默认参数有时候,在定义一个Python函数时,可能会希望某些参数具有默认值。
这样,在调用该函数时,如果不提供这些默认值,则将使用预设值。
例如,下面是一个带有默认值参数的简单Python函数:```def multiply_numbers(x, y=2):result = x * yreturn result```在这个例子中,multiply_numbers()函数接受两个参数x和y,并将它们相乘。
如果没有提供y的值,则默认为2。
五、Python可变参数有时候,在定义一个Python函数时,可能不知道需要传递多少参数。
在这种情况下,可以使用可变参数。
例如,下面是一个带有可变参数的简单Python函数:```def sum_numbers(*numbers):result = 0for number in numbers:result += numberreturn result```在这个例子中,sum_numbers()函数接受任意数量的数字作为参数,并返回它们的总和。
OpenCV教程2(python)OpenCV教程2(python)上节我们简单的介绍了⼀下OpenCV操作图⽚,这节我们讲⼀下视频的有关操作。
视频和图⽚从某种程度上来讲其实是同⼀种东西,基本上所有的视频都是由⼀帧⼀帧图⽚组成的,操作视频其实就是对每⼀帧的图⽚进⾏操作。
OpenCV基础操作-视频1.获取视频和播放视频还是先上代码,再去解释代码,这样便于学习。
import numpy as npimport cv2#读取摄像头,若想读取视频,参数0换成视频的路径+⽂件名cap = cv2.VideoCapture(0)while(True):ret, frame = cap.read()cv2.imshow('frame',frame)if cv2.waitKey(1)== ord('q'):breakcap.release()cv2.destroyAllWindows()对照前⾯操作图像的代码,是不是发现很像。
cv2.VideoCapture()创建了⼀个VideoCapture对象,⽤来捕获视频。
它的参数可以是设备的索引号,或是⼀个视频⽂件。
设备的索引号是指定要⽤的摄像头,⼀般内置的摄像头的索引号为0,可以换成1或其他的数字调⽤其他的摄像头。
因为视频是⼀帧⼀帧获取的,所以接下来是个⼀个while True循环,循环读取每⼀帧。
ret, frame = cap.read()读取每⼀帧,其中ret表⽰⼀个True/False的布尔值,⽤来表⽰是否读取成功。
frame表⽰读取到的np.array类型的每⼀帧,就是图⽚。
cv2.imshow('frame',frame)将每⼀帧显⽰在⼀个叫frame的窗⼝上。
这⾥解释⼀下,为什么这样显⽰在窗⼝上会产⽣视频的效果。
前⾯操作图⽚的时候,我们提到过,显⽰多幅图像的时候,若cv2.imshow()指定相同的窗⼝名,这样后⾯显⽰的图⽚会覆盖前⾯的图⽚,⽽产⽣⼀个窗⼝。
1图像读取和写入1.1图片读取[1]unread(img_path,flag) 读取图片,返回图片对象img_path: 图片的路径,即使路径错误也不会报错,但打印返回的图片对象为None flag:读取图片的方式cv2.IMREAD_COLOR,读取彩色图片,图片透明性会被忽略,为默认参数,也可以传入1cv2.IMREAD_GRAYSCALE,按灰度模式读取图像,也可以传入0cv2.IMREAD_UNCHANGED,读取图像,包括其alpha通道,也可以传入-11.2图片展示[1]imshow(window_name,img):显示图片,窗口自适应图片大小window_name: 指定窗口的名字img:要显示的图片对象可以指定多个窗口名称,显示多个图片waitKey(millseconds) 键盘绑定事件,阻塞监听键盘按键,返回一个数字(不同按键对应的数字不同)。
如果关闭图片窗口,则无法返回一个数字,也无法继续进行编写代码。
millseconds: 传入时间毫秒数,在该时间内等待键盘事件;传入0时,会一直等待键盘事件[1]destroyAllWindows(window_name)window_name: 需要关闭的窗口名字,不传入时关闭所有窗口1.3图片保存[1]imwrite(img_path_name, img, num)img_path_name:要保存的文件名img:要保存的图像num:可选参数,它针对特定的格式:对于JPEG,其表示的是图像的质量,用0 - 100的整数表示,默认95;对于png ,第三个参数表示的是压缩级别,默认为3。
从0到9压缩级别越高图像越小2图像像素获取和编辑2.1像素值获取img = cv2.imread(r"C:\Users\Administrator\Desktop\roi.jpg")# r代表处理不转义现象#获取和设置pixel = img[100,100] #[57 63 68],获取(100,100)处的像素值img[100,100]=[57,63,99] #设置像素值b = img[100,100,0] #57, 获取(100,100)处,blue通道像素值g = img[100,100,1] #63r = img[100,100,2] #68r = img[100,100,2]=99 #设置red通道值#获取和设置piexl = img.item(100,100,2)img.itemset((100,100,2),99)2.2图片性质import cv2img = cv2.imread(r"C:\Users\Administrator\Desktop\roi.jpg")#rows,cols,channelsimg.shape #返回(280, 450, 3), 宽280(rows),长450(cols),3通道(channels)img.shape[:2] 取彩色图片的长、宽。
img.shape[:3] 则取彩色图片的长、宽、通道。
img.shape[0]:图像的垂直尺寸(高度)img.shape[1]:图像的水平尺寸(宽度)img.shape[2]:图像的通道数#sizeimg.size #返回378000,所有像素数量,=280*450*3#typeimg.dtype #dtype('uint8')2.3ROI截取roi = img[100:200,300:400] #截取100行到200行,列为300到400列的整块区域img[50:150,200:300] = roi #将截取的roi移动到该区域(50到100行,200到300列)b = img[:,:,0] #截取整个蓝色通道b,g,r = cv2.split(img) #截取三个通道,比较耗时img = cv2.merge((b,g,r)) #将单独的三个通道合并成一副图像2.4添加边界[1]cv2.copyMakeBorder(src, top, bottom, left, right, borderType, dst=None,value=None)src:图像对象top,bottom,left,right: 上下左右边界宽度,单位为像素值borderType:cv2.BORDER_CONSTANT, 带颜色的边界,需要传入另外一个颜色值cv2.BORDER_REFLECT, 边缘元素的镜像反射做为边界cv2.BORDER_REFLECT_101/cv2.BORDER_DEFAULTcv2.BORDER_REPLICATE, 边缘元素的复制做为边界cv2.BORDER_WRAPvalue: borderType为cv2.BORDER_CONSTANT时,传入的边界颜色值,如[0,255,0]2.5像素算术运算[1]cv2.add(img1,img2,dst,mask,dtype)相加的两个图片,应该有相同的大小和通道img1:图片对象1img2:图片对象2mask:None (掩膜,一般用灰度图做掩膜,img1和img2相加后,和掩膜与运算,从而达到掩盖部分区域的目的)dtype:-1注意:图像相加时应该用cv2.add(img1,img2)src = source 源dst = destination 目的[2]cv.addWeight(img1,alpha,img2,beta,gamma,dst):两张图片相加,分别给予不同权重,实现图片融合和透明背景等效果(img1*alpha+img2*beta+gamma)img1:图片对象1alpha:img1的权重img2:图片对象2beta:img1的权重gamma:常量值,图像相加后再加上常量值dtype:返回图像的数据类型,默认为-1,和img1一样2.6图像位运算[1]cv2.btwise_and(img1,img2,dst,mask): 与运算img1:输入图片对象1img2:输入图片对象2mask:掩膜[2]cv2.bitwise_or(img1,img2,dst,mask):或运算img1:输入图片对象1img2:输入图片对象2mask:掩膜[3]cv2.bitwise_not(img1,dst, mask): 非运算img1:输入图片对象1mask:掩膜[4]cv2.bitwise_xor(img1,img2,dst,mask):异或运算,相同为1,不同为0(1^1=0,1^0=1)img1:输入图片对象1img2:输入图片对象2mask:掩膜2.7图像颜色空间转换[1]cv2.cvtColor(img, code)img: 输入图像对象code:图像转换规则,包括:cv2.COLOR_RGB2GRAY: RGB转换到灰度模式cv2.COLOR_RGB2HSV:RGB转换到HSV模式(hue,saturation,Value)[2]cv2.inRange(hsv, lowerb, upperb)img: 原始图像lowerb: 低边界array,如lower_blue = np.array([110,50,50])upperb:高边界array,如upper_blue = np.array([130,255,255])例如:cv2.inRange(hsv, lower_green, upper_green)2.8运算性能评价[1]cv2.getTickCount():返回CPU自某个时间以来走过的时钟周期数[2]cv2.getTickFrequency():返回CPU一秒钟所走的时钟周期数举例:img1 = cv2.imread('messi5.jpg')e1 = cv2.getTickCount()for i in xrange(5,49,2):img1 = cv2.medianBlur(img1,i)e2 = cv2.getTickCount()t = (e2 - e1)/cv2.getTickFrequency()print t2.9绑定trackbar到图像[1]cv2.createTrackbar(trackbarname, winname, value, count, onChange)为窗口添加trackbartrackbarname: trackbar的名字winname: 窗口的名字value: trackbar创建时的值count:trackbar能设置的最大值,最小值总为0onChange:trackbar值发生变化时的回调函数,trackbar的值作为参数传给onchange[2]cv2.getTrackbarPos(trackbarname, winname) 获取某个窗口中trackbar的值trackbarname: trackbar的名字winname: 窗口的名字3图像阈值化[1]cv2.threshold(img, thresh, maxval, type,[dst]):img:图像对象,必须是灰度图thresh:阈值maxval:最大值type:cv2.THRESH_BINARY:小于阈值的像素置为0,大于阈值的置为maxvalcv2.THRESH_BINARY_INV:小于阈值的像素置为maxval,大于阈值的置为0cv2.THRESH_TRUNC:小于阈值的像素不变,大于阈值的置为threshcv2.THRESH_TOZERO小于阈值的像素置0,大于阈值的不变cv2.THRESH_TOZERO_INV小于阈值的不变,大于阈值的像素置0 返回两个值ret:阈值img:阈值化处理后的图像[2]cv2.adaptiveThreshold(img, maxValue, adaptiveMethod, threshType, blocksize, C)自适应阈值处理,图像不同部位采用不同的阈值进行处理img: 图像对象,8-bit单通道图maxValue:最大值adaptiveMethod: 自适应方法cv2.ADAPTIVE_THRESH_MEAN_C :阈值为周围像素的平均值cv2.ADAPTIVE_THRESH_GAUSSIAN_C : 阈值为周围像素的高斯均值(按权重)threshType:cv2.THRESH_BINARY: 小于阈值的像素置为0,大于阈值的置为maxValuelcv2.THRESH_BINARY_INV: 小于阈值的像素置为maxValue,大于阈值的置为0 blocksize:计算阈值时,自适应的窗口大小,必须为奇数(如3:表示附近3个像素范围内的像素点,进行计算阈值)C:常数值,通过自适应方法计算的值,减去该常数值(mean value of the blocksize*blocksize neighborhood of (x, y) minus C)4图像形状变换4.1放大和缩小图像[1]cv2.resize(src, dsize, fx, fy, interpolation)src: 输入图像对象dsize:输出矩阵/图像的大小,为0时计算方式如下:dsize = Size(round(fx*src.cols),round(fy*src.rows))fx: 水平轴的缩放因子,为0时计算方式:(double)dsize.width/src.colsfy: 垂直轴的缩放因子,为0时计算方式:(double)dsize.heigh/src.rowsinterpolation:插值算法cv2.INTER_NEAREST :最近邻插值法cv2.INTER_LINEAR:默认值,双线性插值法cv2.INTER_AREA:基于局部像素的重采样(resampling using pixel area relation)。