首页 > 其他分享 >opencv 读取图片 图片数据处理 笔记

opencv 读取图片 图片数据处理 笔记

时间:2023-06-02 18:32:01浏览次数:51  
标签:... 读取 img cv2 opencv 归一化 IMREAD 图片


1. python中各类图片读取工具的比较

参考Python各类图像库的图片读写方式总结可知,opencv的性能表现最好。opencv yyds

相关文章收藏:

  • Python-OpenCV:cv2.imread(),cv2.imshow(),cv2.imwrite()
  • Python各类图像库的图片读写方式总结

2. opencv常用函数

2.1 读取图片

cv2.imread(filename, flags)

参数解释
filename:图片的完整路径
flags:标志位,{cv2.IMREAD_COLOR,cv2.IMREAD_GRAYSCALE,cv2.IMREAD_UNCHANGED}

cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道,可用1作为实参替代
cv2.IMREAD_GRAYSCALE:读入灰度图片,可用0作为实参替代
cv2.IMREAD_UNCHANGED:顾名思义,读入完整图片,包括alpha通道,可用-1作为实参替代
PS:alpha通道,又称A通道,是一个8位的灰度通道,该通道用256级灰度来记录图像中的透明度复信息,定义透明、不透明和半透明区域,其中黑表示全透明,白表示不透明,灰表示半透明

返回值
<class 'numpy.ndarray'>

  1. 形状。当标志位flagscv2.IMREAD_COLORcv2.IMREAD_UNCHANGED时(彩色图),形状为(H, W, C);当标志位flagscv2.IMREAD_GRAYSCALE时(灰度图),形状为(H, W)。其中H为高度,W为宽度,C=3为通道数。提示:可以使用numpy的转置方法将形状调整为(C, H, W)(注意:转置之后就不能再使用cv2.resizecv2.cvtColor等函数了,因为cv2并不知道你转置了,cv2只认识形状为(H, W, C)的图片)。
img = img.transpose(2, 0, 1)  # 形状(H, W, C)转置为(C, H, W)
  1. 彩色图的通道顺序。默认通道顺序为BGR,这与我们熟知的通道顺序RGB不一致,而且所有主流工具库的通道顺序都是RGB提示:当有需要时,可手动转换通道。
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

示例

img = cv2.imread('dataset/sample.png', flags=cv2.IMREAD_COLOR)  # 读取彩色图
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)                      # BGR转RGB

2.2 调整图片大小

cv2.resize(src, dsize, dst=..., fx=..., fy=..., interpolation=...)

参数解释
src:输入图片,numpy类型,必须保证形状为(高, 宽, 通道数)
dsize:调整后的大小,元组类型。填写(宽,高)(与输入图片形状的(高, 宽)相反),不填通道数
dst:输出图片,一般不用填。
fx,fy:图片沿x轴,y轴的缩放系数;当且仅当dsize=(0,0)disze=(-1,-1)时生效。
interpolation:插值方式。可选项如下

INTER_NEAREST: 最近邻插值
INTER_LINEAR: 双线性插值(默认设置)
INTER_AREA: 使用像素区域关系进行重采样
INTER_CUBIC: 4x4像素邻域的双三次插值
INTER_LANCZOS4: 8x8像素邻域的Lanczos插值

返回值
<class 'numpy.ndarray'> 即输入图片调整大小之后的图片。
示例

img = cv2.resize(img, (224, 224), interpolation=cv2.INTER_LINEAR)  # 基于双线性插值法调整大小为224*224

2.3 归一化

cv2.normalize(src, dst, alpha=..., beta=..., norm_type=..., dtype=..., mask=...)

对输入的numpy数组进行所有元素归一化(不区分维度)。
参数解释
src:输入数组
dst:输出,可以指定一个变量,赋值给它。可以不填或用None代替。
alpha:①范围归一化的下界;②值归一化的上界。
beta:仅范围归一化时生效,上界。
norm_type:归一化的类型,可选类型如下

NORM_MINMAX:数值被平移或缩放到一个指定的范围opencv 读取图片 图片数据处理 笔记_归一化,线性归一化,常用。
opencv 读取图片 图片数据处理 笔记_python_02
NORM_INF:分母为L∞范数 ,即矩阵各元素绝对值的最大值(切比雪夫距离)
opencv 读取图片 图片数据处理 笔记_ci_03
NORM_L1:分母为L1-范数,即矩阵元素的绝对值之和(曼哈顿距离)
opencv 读取图片 图片数据处理 笔记_ci_04
NORM_L2:分母为L2-范数,即矩阵各元素的欧几里德距离之和
opencv 读取图片 图片数据处理 笔记_python_05

dtype:一个整数,输出的类型。默认-1,与输入的类型相同;其他值0:uint8,1:int8,2:uint6
mask:与src形状相同,相应位置上为1时会被归一化,为0时保持原值。

返回值
<class 'numpy.ndarray'>形状与输入相同。
示例

x = cv2.normalize(x, None, alpha=0, beta=1, norm_type=cv2.NORM_MINMAX)
x = cv2.normalize(x, None, alpha=1, norm_type=cv2.NORM_MINMAX)  # 与上一句等价,beta默认为0

参考


标签:...,读取,img,cv2,opencv,归一化,IMREAD,图片
From: https://blog.51cto.com/u_16125110/6404563

相关文章

  • net core 读取enum上的描述信息
    https://github.com/xin9le/FastEnum简单使用:enumCompany{[EnumMember(Value="Apple,Inc.")]Apple=0,}varvalue=Company.Apple.GetEnumMemberValue();//Apple,Inc.dotnetaddpackageFastEnumPM>Install-PackageFastEnum测试......
  • Android中实现网络图片的获取
    在Android中要想获取网络资源,可以使用HttpURLConnection和HttpsURLConnection来实现相关功能。下面案例实现了基于URL的简单请求响应,通过HttpURLConnection获取连接,通过InputStream获取输入流,BitmapFactory将数据流转换为Bitmap,再将Bitmap通过线程的Message发送出去,Handl......
  • 使用Python爬虫爬取网络美女图片
    准备工作安装python3.6略安装requests库(用于请求静态页面)pipinstallrequests-ihttps://mirrors.ustc.edu.cn/pypi/web/simple安装lxml库(用于解析html文件)pipinstalllxml-ihttps://mirrors.ustc.edu.cn/pypi/web/simple安装与配置selenium(用于请求动态页面)pipinstall......
  • 直播电商平台开发,RecyclerView实现item图片放大缩小
    直播电商平台开发,RecyclerView实现item图片放大缩小((ShopDetailsViewHolder)holder).img_list.setOnClickListener(newView.OnClickListener(){  @RequiresApi(api=Build.VERSION_CODES.LOLLIPOP)  @Override  publicvoidonClick(Viewv){    Inten......
  • ESP32 IDF 读取双路AS5600
    白了少年头,空悲切。又有哥们生孩子了。他们有车有房有老婆还有孩子,也不知咋挣来的。搞得我聚会都不想去了。郁闷。没办法,自己只有努力。胸藏万卷凭吞吐,笔有千钧任翕张。前言之前用ESP32驱动两路AS5600没有成功,后面简单梳理了下IIC的逻辑,才反应过来。下面记录一下。ESP32......
  • springboot打包jar文件运行后无法读取jar目录中的Excel模板文件
    原因:SpringBoot内嵌web容器,其特点是只有一个jar文件,在容器启动后不会解压缩。解决方式:1.必须使用相对路径读取文件;假设你的模板文件放在了resources—>templates—>xlsx—>test.xlsx2.只能使用流去读取,不能用file;//jar里面文件读取方式: ClassPathResourceclassPathRes......
  • 微信小程序下载图片到本地
    downloadImg:function(e){//触发函数console.log(e.currentTarget.dataset.url)wx.downloadFile({url:e.currentTarget.dataset.url,//需要下载的图片urlsuccess:function(res){......
  • opencv学习笔记04-色彩转换
    opencv简易笔记4--色彩转换1.色彩空间的认识色彩是人的眼睛对于不同频率的光线的不同感受,色彩既是客观存在的(不同频率的光)又是主观感知的,有认识差异。所以人类对于色彩的认识经历了极为漫长的过程,直到近代才逐步完善起来,但人类仍不能说对色彩完全了解并准确表述了,许多概念不是......
  • 在Vue中实现扫码枪读取条形码数据
    1.创建扫码枪输入组件首先,我们需要创建一个Vue组件来处理扫码枪的输入。在组件中,我们使用一个input元素来接收扫码枪的输入,并将输入的值绑定到组件的scanEntry属性上。<template><divclass="BarCodeScannerDiv"><inputclass="input"v-model="scanEntry":placehold......
  • element ui 预览图片的时候滚动鼠标放大缩小, 重新打开的时候恢复原来大小
    <template><div><el-button@click="openPreview">预览图片</el-button><el-dialog:visible.sync="dialogVisible":close-on-click-modal="false":before-close="resetPreview"><im......