Opencv学习笔记(3)
Opencv库常见函数
1、读取指定图片
语法:cv2.imread()函数可以用于读取指定图片,使用时需要先导入opencv库
1 import cv2 # 导入opencv库
2 sample = cv2.imread("img/sample.png") #读取img文件夹 sample.png图片,并命名为sample
Tips:通过“imread()”函数读取到的图像是以RGB为颜色空间的,且以BGR顺序排列。
cv2.IMREAD_COLOR:读取一副彩色图片,图片的透明度会被忽略,默认为该值,实际取值为1;
cv2.IMREAD_GRAYSCALE:以灰度模式读取一张图片,实际取值为0
cv2.IMREAD_UNCHANGED:加载一副彩色图像,透明度不会被忽略。
2、创建窗口
语法:cv2.namedWindow(winname[,flags])
其中,参数winname表示新建的窗口名称,自己随便取;
flags表示窗口的标识(一般默认为cv2.WINDOW_AUTOSIZE,表示窗口大小自动适应图片大小,并且不可手动更改; cv2.WINDOW_NORMAL表示用户可以改变这个窗口大小;cv.WINDOW_OPENGL窗口创建的时候会支持OpenGL)。
OpenCV也支持有限的界面编程,主要是针对窗口、控件和鼠标事件等,比如滑块。有了这些窗口和控件,可以更好地展现图像并调节图像的一些参数。
3、设置窗口
语法:cv2.setWindowProperty()
1 cv2.setWindowProperty('winname',cv2.WND_PROP_FULLSCREEN,cv2.WINDOW_FULLSCREEN) # Set the windows to be full screen.
2 # 设置窗口全屏
“cv2.WND_PROP_FULLSCREEN”指的是可以全屏的属性,“cv2.WINDOW_FULLSCREEN”指设置窗口全屏。
4、显示图像
语法:cv2.imshow(window_name,image)
window-name:显示图像的窗口的名字
image : 要显示的图像,窗口大小自动调整为图片大小。
注意:该函数一般和cv2.waitKey()、cv2.destroyAllWindows()、cv2.destroyWindow()一起使用。
cv2.waitKey()函数是键盘绑定函数,等待键击任意键或指定键继续程序。
如果没有cv2.waitKey()函数,图像不会显示(也许是一闪而过,我们人眼观察不到),cv2.waitKey()函数是一个键盘绑定函数(相当于让程序在这里挂起暂停执行)
cv2.waitKey(k)
k:在时间k(单位ms)内,等待用户按键,返回按键的值,如果没有触发事件,则跳出等待。默认k=0,则无限等待按键。
cv2.destroyAllWindows()
用来销毁所有已经创建的窗口, 如果需要销毁指定窗口使用cv2.destroyWindow()函数,他接受一个表示窗口名字的名字。
cv2.destroyWindow()销毁指定窗口(从内存中清除)。
放大缩小图片的例子
1 import numpy as np # 导入numpy模块
2 import cv2 # 导入opencv模块
3
4 img = cv2.imshow('car.png') # 显示图片
5 cv2.namedWindow('image') # 创建窗口
6 cv2.imshow('image', img) # 显示窗口下的可调整大小的图片
7 cv2.waitKey(0) # 键盘绑定函数
8 cv2.destroyAllWindows() # 销毁所有创建的窗口

5、转化图像的色彩空间
语法:cv2.cvtColor()函数
通过“imread()”函数读取到的图像是RGB颜色空间的,并且是以BGR顺序排列的,因此,为了便于按颜色分割图像,我们需要将它转换为HSV色彩空间,这里可以通过Opencv库中的“cvtColor()”函数来实现。
1 sample = cv2.imread("img/sample.png")#读取img文件夹下sample.png图片,并命名为sample
2 hsv = cv2.cvtColor(sample,cv2.COLOR_BGR2HSV)#将图像sample转换为HSV色彩空间并命名为hsv
其中,sample指的是通过“imread()”函数读取到的以RGB为色彩空间的原图,
“cv2.COLOR_BGR2HSV”指的是色彩空间的转换方式为BGR→HSV,
hsv是一个变量,用于存储转换后的HSV色彩空间的图片。
6、创建零矩阵
语法:numpy.zeros()
Numpy是Python中的一个科学计算库。array()函数可以用来创建一个数组(二维矩阵)
而zero()函数创建一个多维零矩阵
1 #numpy中的zero()函数可以用来创建一个多维零矩阵,使用时,我们需要先导入该库。
2 import numpy as np
3 color = np.zeros((320, 240, 3),dtype=np.uint8) # 创建一个三维零矩阵,类型为uint8
其中,“320”指的是第一维度,“240”指的是行数,“3”指的是列数,uint8是8位无符号整形,表示范围为[0,255]的整数,它专门用于存储各种图像的矩阵类型,要想将当前的矩阵作为图像类型来进行各种操作,就要将数据类型定义为uint8。
7、 保存图片
语法:cv2.imwrite(filename,image[,params])
将图像保存到指定文件。filename:文件名,img:要保存的图像,params:格式特定参数编码
cv2.CV_IMWRITE_JPEG_QUALITY:设置 .jpeg/.jpg 格式的图片质量,取值为 0-100(默认值 95),数值越大则图片质量越高;
cv2.CV_IMWRITE_WEBP_QUALITY:设置 .webp 格式的图片质量,取值为 0-100;
cv2.CV_IMWRITE_PNG_COMPRESSION:设置 .png 格式图片的压缩比,取值为 0-9(默认值 3),数值越大则压缩比越大。
8、输出图片的信息
shape:如果是彩色图像,则返回(行数,列数,通道数)的数组;如果是灰度图像,则返回(行数,列数)的数组
读取彩色图像的行数与列数
1 shape[0]=图像行数
2 shape[1]=图像列数
3 shape[2]=图像通道数
分别读取图片行数、列数与通道数
1 import cv2
2 import numpy as np
3 Img = cv2.imread('1.jpg',cv2.IMREAD_UNCHANGED)
4 print ('The number of lines of this image is:',Img.shape[0])
5 print ('The number of columns of this image is:',Img.shape[1])
6 print ('The number of channels of this image is:',Img.shape[2])
Opencv学习笔记(3)的更多相关文章
- opencv学习笔记(七)SVM+HOG
opencv学习笔记(七)SVM+HOG 一.简介 方向梯度直方图(Histogram of Oriented Gradient,HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子 ...
- opencv学习笔记(六)直方图比较图片相似度
opencv学习笔记(六)直方图比较图片相似度 opencv提供了API来比较图片的相似程度,使我们很简单的就能对2个图片进行比较,这就是直方图的比较,直方图英文是histogram, 原理就是就是将 ...
- opencv学习笔记(五)镜像对称
opencv学习笔记(五)镜像对称 设图像的宽度为width,长度为height.(x,y)为变换后的坐标,(x0,y0)为原图像的坐标. 水平镜像变换: 代码实现: #include <ios ...
- opencv学习笔记(四)投影
opencv学习笔记(四)投影 任选了一张图片用于测试,图片如下所示: #include <cv.h> #include <highgui.h> using namespace ...
- opencv学习笔记(三)基本数据类型
opencv学习笔记(三)基本数据类型 类:DataType 将C++数据类型转换为对应的opencv数据类型 OpenCV原始数据类型的特征模版.OpenCV的原始数据类型包括unsigned ch ...
- opencv学习笔记(二)寻找轮廓
opencv学习笔记(二)寻找轮廓 opencv中使用findContours函数来查找轮廓,这个函数的原型为: void findContours(InputOutputArray image, O ...
- opencv学习笔记(一)IplImage, CvMat, Mat 的关系
opencv学习笔记(一)IplImage, CvMat, Mat 的关系 opencv中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage,这三种类型都可以代表和显示图像,但是,M ...
- paper 93:OpenCV学习笔记大集锦
整理了我所了解的有关OpenCV的学习笔记.原理分析.使用例程等相关的博文.排序不分先后,随机整理的.如果有好的资源,也欢迎介绍和分享. 1:OpenCV学习笔记 作者:CSDN数量:55篇博文网址: ...
- (转) OpenCV学习笔记大集锦 与 图像视觉博客资源2之MIT斯坦福CMU
首页 视界智尚 算法技术 每日技术 来打我呀 注册 OpenCV学习笔记大集锦 整理了我所了解的有关OpenCV的学习笔记.原理分析.使用例程等相关的博文.排序不分先后,随机整理的 ...
- OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波
http://blog.csdn.net/chenyusiyuan/article/details/8710462 OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波 201 ...
随机推荐
- mysql8数据转移到mysql5
源MySQL版本:8.0.20 目标MySQL版本:5.7.19 使用mysqldump.mysqlpump等工具备份源数据库的数据为sql文件 将sql文件里的utf8mb4_0900_ai_ci ...
- Programming abstractions in C阅读笔记:p84-p87
<Programming Abstractions In C>学习第43天,p84-p87总结. 一.技术总结 1.record record也称为structure(结构体),是一种数据 ...
- 树链剖分 | 洛谷 P4114 Qtree1
前言 题目链接:洛谷 P4114 Qtree1 前置知识:树链剖分 题意 给定一棵树,有修改边权和查询两点之间边权最大值两种操作,对于每个查询输出结果. 解析 已经在前置博客里提到,树链剖分 可以将树 ...
- Redis的五大数据类型的数据结构
概述 Redis底层有六种数据类型包括:简单动态字符串.双向链表.压缩列表.哈希表.跳表和整数数组.这六种数据结构五大数据类型关系如下: String:简单动态字符串 List:双向链表.压缩列表 ...
- Xshell7 / Xftp7 永久免费,官网直连下载地址
主要目的是让大家随时随地从官网下载Xshell和Xftp免费版(个人/家庭/学校免费) 最新变动:官方目前仅提供最新版以及上一个版本的软件下载!其他版本不提供下载 免费版5版本(最后一个版本,无任何限 ...
- 现代 CSS 解决方案:原生嵌套(Nesting)
很早之前,就写过一篇与原生嵌套相关的文章 -- CSS 即将支持嵌套,SASS/LESS 等预处理器已无用武之地?,彼时 CSS 原生嵌套还处于工作草案 Working Draft (WD) 阶段,而 ...
- 文心一言 VS 讯飞星火 VS chatgpt (91)-- 算法导论8.3 4题
四.用go语言,说明如何在 O(n) 时间内,对 0 到 $n^3-1$ 区间内的n个整数进行排序. 文心一言: 在 O(n) 时间内对 0 到 n^3-1 区间内的 n 个整数进行排序,可以使用基数 ...
- oracle优化-分页查询的错误认识
对于分页查询,上一篇文章总结了实现分页查询的办法.同时给出等价写法,另外在执行计划角度验证SQL的等价性https://www.cnblogs.com/handhead/p/13856505.html ...
- Go语言常用标准库——flag
文章目录 os.Args flag包基本使用 导入flag包 flag参数类型 定义命令行flag参数 flag.Type() flag.TypeVar() flag.Parse() flag其他函数 ...
- 【Azure Function App】Python Function调用Powershell脚本在Azure上执行失败的案例
问题描述 编写Python Function,并且在Function中通过 subprocess 调用powershell.exe 执行 powershell脚本. import azure.fun ...