openCV(一) 读取保存图像
时间:2020-05-06
本文章向大家介绍openCV(一) 读取保存图像,主要包括openCV(一) 读取保存图像使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1、读入图像: cv2.imread(相对/绝对路径,读取标记);
返回值是 Mat 类型,即返回读取的图像,读取失败返回一个空的矩阵对象(Mat::data==NULL)
参数有2:1为读取的图片文件名,使用相对/绝对路径;2为一个读取标记,用于选择读取图片的方式,默认是IMREAD_COLOR
- cv2.IMREAD_COLOR:读入一幅彩色图像,BGR模式,图像的透明度被忽略,这是默认参数;
- cv2.IMREAD_GRAYSCALE:以灰度模式读入图像;
- cv2.IMREAD_UNCHANGED:读入一幅图像,并且包括图像的alpha通道;
Tips: ·当图像的路径错误,openCV不会提醒,只是输出结果为None ·第二个参数告诉函数应该如何读取这幅图片
2、显示图像:cv2.imshow(窗口名字,图像)
窗口会自动调整图像大小,第一个参数是窗口的名字,第二个是图像,可以创建多个窗口,多个名字。
- cv2.waitKey()是一个键盘绑定函数,他的时间尺度是毫秒,函数等待特定的几毫秒,看是否有键盘输入。
·特定时间内,按任意键函数返回按键的ASCII码,程序继续运行。
·没有按键,返回 -1;
·设置函数的参数为0,则会无限等待键盘输入;
可以用于判断特定键是否被按下。
-cv2.destroyAllWindows():删除窗口;
-cv2.destroyWindows(窗口名):删除特定的窗口
Tips: 特殊情况是,先创建一个窗口,再加载图像。这时可以决定窗口是否可以调整大小。使用函数cv2.namedWindow(); 初始设定函数标签是:cv2.WINDOW_AUTOSIZE,但是若你把标签改成cv2.WINDOW_NORMAL,你就可以调整窗口大小, 图像维度太大或要添加轨迹条时,调增窗口大小会很有用。
3、保存图像: cv2.imwrite(文件名,要保存的图像)
1 import numpy as np 2 import cv2 3 cv2.namedWindow('image',cv2.WINDOW_NORMAL) 4 img=cv2.imread('0.png',0) 5 cv2.imshow('image',img) 6 cv2.waitKey(0) 7 # cv2.imwrite('a.png',img) 8 cv2.destroyAllWindows()
练习:加载一个灰度图,显示图片,按下s保存后退出,按下ESC键退出不保存
1 import numpy as np 2 import cv2 3 img=cv2.imread('0.png',0) # 读取图像 4 cv2.imshow('image',img) # 新建 image 窗口 5 k=cv2.waitKey(0)&0xFF # 64位系统需要将其加上0xFF 6 if k==ord('s'): # ord()函数用于返回对应字符的ascii码,chr()用于表示ascii码对应字符他的输入是数字,可以是十进制也可以是十六进制
7 cv2.imwrite('a.png',img)
8 cv2.destroyAllWindows()
9 elif k==27: 10 cv2.destroyAllWindows()
练习:用于生成随机验证码
1 import random 2 # 1X3Y3ZX 3 def make_code(size=7): 4 res = '' 5 for i in range(size): 6 # 循环一次则得到一个随机字符(字母/数字) 7 s = chr(random.randint(65, 90)) 8 num = str(random.randint(0, 9)) 9 res += random.choice([s, num]) 10 return res 11 res=make_code() 12 print(res)
使用matplotlib显示图像
1 # 彩色图像使用openCV加载时是BG模式,但是matplotlib是RGB模式,所以彩色图像若已经被openCV读取,将不会被Matplotlib正确显示。 2 import numpy as np 3 import cv2 4 from matplotlib import pyplot as plt 5 img=cv2.imread('0.png',0) 6 plt.imshow(img,cmap='gray',interpolation='bicubic') 7 plt.xticks([]),plt.yticks([]) 8 plt.show()
原文地址:https://www.cnblogs.com/Free-Ink/p/12836165.html
- 小程序中实现一键复制长段文本内容
- PHP数据结构(七) ——串与实现KMP算法
- PHP数据结构(八) ——赫夫曼树实现字符串编解码(实践1)
- 小程序开发注意点儿,新手入门基础
- ajax跨域有没有踩过坑,IE低版本浏览器如何支持?
- 你可能不知道的 Django Rest Framework 的两个新特性
- PHP数据结构(八) ——赫夫曼树实现字符串编解码(实践2)
- 你应该使用 Python 管理 Cron 作业
- CSS3有哪些好用的属性?
- PHP数据结构(九) ——图的定义、存储与两种方式遍历
- 使用 React 和 Django REST Framework 构建你的网站
- 小程序中带图片modal的实现
- 号称「永远不会输钱」的马丁格尔策略
- 小程序中图片高度等比缩放
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法