opencv学习笔记D01
opencv学习笔记D01
@
opencv,Open Source Computer Vision Library.OpenCV于1999年由Intel建立。OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、MacOS操作系统上。它轻量级而且高效——由一系列 C 函数和少量C++类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
一、图片读取
cv2.imread(path, flag)
flag默认为1。另外一个需要注意的是opencv是以bgr三通道打开图像,注意bgr与rgb的相互转换。
import cv2
img = cv2.imread('path', cv2.IMREAD_COLOR)
img = cv2.imread('path', 0)
# flag有三种模式
# cv2.IMREAD_COLOR, flag=1, 加载一副彩色的图像,透明度会被忽略,如jpg图像。默认使用这种模式打开
# cv2.IMREAD_GRAYSCALE, flage=0, 以灰度加载一张图像
# cv2.IMREAD_UNCHANGED, 加载一副彩色图像,同时还会有透明度通道,如png图像
二、图片保存
cv2.imwrite(存储路径, 图像变量, [, 存盘标识])
cv2.imwrite('path', img)
cv2.imwrite('path', img, cv2.IMWRITE_JPEG_QUALITY=95)
# 存盘标识有三种。最常用的就是保存为.jpg和.png两种
# 1.cv2.IMWRITE_JPEG_QUALITY 设置图片格式为jpeg,或jpg,其值0-100,数值越大质量越高,默认95
# 2.cv2.IMWRITE_WEBP_QUALITY
# 3.cv2.IMWRITE_PNG_COMPRESSION 设置图片格式为png,其值0-9,为压缩等级,默认为3
这就意味着,保存图片的过程中都是有损压缩过的,图像精度会有影响。比如一个严格意义上的二值图像,0或255,但是保存之后就不止只有0和255了。
三、图片展示
cv2.imshow('window_name', img)
# 特别注意的是cv2.nameWindow中的第一个参数要和cv2.imshow中的第一个参数一致。
# 大致可以理解为先打开一个窗口,命名一个名字,然后进行展示图像。
# 第二个参数有两种模式:
# cv2.WINDOW_NORMAL标识窗口大小可调节,或者使用另外一种模式
# cv2.WINDOW_AUTOSIZE根据原图大小进行展示
cv2.namedWindow('window_name', cv2.WINDOW_NORMAL)
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destoryAllWindows()
四、图片缩放
cv2.resize(src, dsize, interpolation=)
图片的缩放一般使用的方式有两种:第一种就是缩放成固定大小;第二种就是按比例缩放
缩放过程中有五种插值方式:
- cv2.INTER_NEAREST 最近邻插值
- cv2.INTER_LINEAR 线性插值
- cv2.INTER_AREA 基于局部像素的重采样,区域插值
- cv2.INTER_CUBIC 基于邻域4x4像素的三次插值
- cv2.INTER_LANCZOS4 基于8x8像素邻域的Lanczos插值
cv2.resize(img, (300, 300), interpolation=cv2.INTER_LINEAR) # 默认的使用双线性插值
cv2.resize(img, fx=0.5, fy=0.5)
五、四种常用插值方式的比较
OpenCV的resize函数支持多种插值方式,这里主要比较下面四个常用的插值方式。
参考资料:《OpenCV中resize函数五种插值算法的实现过程》https://blog.csdn.net/fengbingchun/article/details/17335477
1、最近邻插值
最近邻插值是最简单的插值方法,选取离目标点最近的点作为新的插入点。
变换后:
2、双线性插值
线性插值是以距离为权重的一种插值方式。如果想要深入地理解,可以先回顾一下线性插值。
3、区域插值
区域插值共分三种情况,图像放大时类似于双线性插值,图像缩小(x轴、y轴同时缩小)又分两种情况,此情况下可以避免波纹出现。因此对图像进行缩小时,为了避免出现波纹现象,推荐采用区域插值方法。
如果要缩小图像,通常推荐使用INTER_AREA插值效果最好,而要放大图像,通常使用INTER_CUBIC(速度较慢,但效果最好),或者使用INTER_LINEAR(速度较快,效果还可以)
4、三次样条插值
可以在看过双线性插值之后,再来看三次样条插值。
我是尾巴:
参考博客:https://blog.csdn.net/guyuealian/article/details/85097633
一个人在某一种环境中待久了,就很容易说服自己是某一种人,稍想变得不一样,先不提自己的感受,光是周围的敏感与不适应,就足以让自己缩回十几年不变的藏身之处。
最后推荐:
这次推荐的是两款markdown写作软件,一个是typora,一个是markdownpad。
坚持把opencv做个完整笔记!
opencv学习笔记D01的更多相关文章
- 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的学习笔记.原理分析.使用例程等相关的博文.排序不分先后,随机整理的 ...
随机推荐
- WinDbg常用命令系列---源代码操作相关命令
lsf, lsf- (Load or Unload Source File) lsf和lsf-命令加载或卸载源文件. lsf Filename lsf- Filename 参数: Filename指定 ...
- linux命令之------Linux文档编辑
1.Vi和vim三种模式 (1)命令模式:移动光标 (2)插入模式:编辑文档 (3)末行模式:保存退出 不同模式操作示意图: 其中wq是保存退出,wq!强制保存退出:q不保存退出:q!强制不保存退出. ...
- Error:(1, 1) java: 非法字符: '\ufeff'
找到 java 文件. 使用 notepad 打开,转码,并保存即可.
- hive 整合ranger
一.安装hive插件 1.解压安装 # tar zxvf ranger-2.0.0-SNAPSHOT-hive-plugin.tar.gz -C /data1/hadoop/ 2.修改install ...
- ICEM-带四分之一球体的矩形块
原视频下载地址:https://pan.baidu.com/s/1hsHq9mO 密码: 2iq3
- 解决WordPress访问中文标签出现404的几个方法
最近很多主题用户提到安装完WordPress后中文标签出现404的情况,出现这种情况一般修改固定链接设置是没有效果的,多数是windows主机带来的麻烦.网上多数人说要修改核心文件class-wp.p ...
- 微信小程序之网络通信
关于网络通信,这里我使用的是wx.request,官方代码示例如下: wx.request({ url: 'test.php', //仅为示例,并非真实的接口地址 data: { x: '', y: ...
- 第07组 Beta冲刺(4/5)
队名:摇光 队长:杨明哲 组长博客:求戳 作业博客:求再戳 队长:杨明哲 过去两天完成了哪些任务 文字/口头描述:已经完成代码编辑器,暂时没有其他任务 展示GitHub当日代码/文档签入记录:(组内共 ...
- python 安装setuptools、pip《转》
https://www.jianshu.com/p/e9ab614cad9b 安装setuptools 下载setuptools源码setuptools-25.2.0.tar.gz 地址:https: ...
- Python17个常用内置模块总结
Python17个常用内置模块总结 1.getpass 2.os 3.sys 4.subprocess 5.hashlib 6.json 7.pickle 8.shutil 9.time 10.dat ...