基本函数调用命令(python+opencv)

  • 格式:docx
  • 大小:43.89 KB
  • 文档页数:17

下载文档原格式

  / 34
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1图像读取和写入

1.1图片读取

[1]unread(img_path,flag) 读取图片,返回图片对象

img_path: 图片的路径,即使路径错误也不会报错,但打印返回的图片对象为None flag:读取图片的方式

cv2.IMREAD_COLOR,读取彩色图片,图片透明性会被忽略,为默认参数,也可以传入1

cv2.IMREAD_GRAYSCALE,按灰度模式读取图像,也可以传入0

cv2.IMREAD_UNCHANGED,读取图像,包括其alpha通道,也可以传入-1

1.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] #63

r = img[100,100,2] #68

r = img[100,100,2]=99 #设置red通道值

#获取和设置

piexl = img.item(100,100,2)

img.itemset((100,100,2),99)

2.2图片性质

import cv2

img = cv2.imread(r"C:\Users\Administrator\Desktop\roi.jpg")

#rows,cols,channels

img.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]:图像的通道数

#size

img.size #返回378000,所有像素数量,=280*450*3

#type

img.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_DEFAULT

cv2.BORDER_REPLICATE, 边缘元素的复制做为边界

cv2.BORDER_WRAP

value: borderType为cv2.BORDER_CONSTANT时,传入的边界颜色值,如[0,255,0]

2.5像素算术运算

[1]cv2.add(img1,img2,dst,mask,dtype)相加的两个图片,应该有相同的大小和通道

img1:图片对象1

img2:图片对象2

mask: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:图片对象1

alpha:img1的权重

img2:图片对象2