没有合适的资源?快使用搜索试试~ 我知道了~
基本函数调用命令(python+opencv).pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 16 浏览量
2021-11-26
11:16:32
上传
评论
收藏 567KB PDF 举报
温馨提示
试读
17页
基本函数调用命令(python+opencv).pdf
资源推荐
资源详情
资源评论
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.3 ROI 截取
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
beta:img1 的权重
gamma:常量值,图像相加后再加上常量值
dtype:返回图像的数据类型,默认为-1,和 img1 一样
2.6 图像位运算
[1] cv2.btwise_and(img1,img2,dst,mask): 与运算
img1:输入图片对象 1
img2:输入图片对象 2
mask:掩膜
[2] cv2.bitwise_or(img1,img2,dst,mask):或运算
img1:输入图片对象 1
img2:输入图片对象 2
mask:掩膜
[3] cv2.bitwise_not(img1,dst, mask): 非运算
img1:输入图片对象 1
mask:掩膜
[4] cv2.bitwise_xor(img1,img2,dst,mask):异或运算,相同为 1,不同为 (0 1^1=0,1^0=1)
img1:输入图片对象 1
img2:输入图片对象 2
mask:掩膜
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)
剩余16页未读,继续阅读
资源评论
qiulaoban
- 粉丝: 0
- 资源: 8万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功