OpenCV读入图片,通道拆分,调整窗口尺寸,及保存文件

Opencv-Python学习笔记三——cv2.read, cv2.resize, cv2.split, cv2.merge 我写这篇文章目的是记录图片分辨率不变情况下,只调节窗口尺寸,以防失真。 Opencv 读、显示、存操作 cv.imread() # 读入图片 cv.imshow() # 显示 cv.imwrite() # 存储图片 cv2.imread(path[, flags]) flags的值 cv2.IMREAD_COLOR : 读入彩色图片,任何与透明度相关通道的会被忽视,默认以这种方... 阅读详情

 1.cv2.imread()读入图片

# 读入图片
cv2.imread( const String& filename, int flags )
# filename: 表示图像的路径。
# flags:读取图像的方式。
# -1,读取原图, 不进行任何改变
# 0,以灰度图方式读取原图
# 1,RGB方式读取原图
# 更加具体点:
enum ImreadModes {
       IMREAD_UNCHANGED            = -1, //如果设置,则返回的数据带有alpha通道(R,G,B,A 四个通道),否则没有alpha通道
       IMREAD_GRAYSCALE            = 0,  //如果设置,则将图像转换为单通道灰度图像
       IMREAD_COLOR                = 1,  //如果设置,则将图像转换成3通道BGR彩色图像
       IMREAD_ANYDEPTH             = 2,  //如果设置,则在输入具有相应深度时返回16位/32位图像,否则将其转换为8位
       IMREAD_ANYCOLOR             = 4,  //如果设置,则图像可能以任何颜色格式读取
       IMREAD_LOAD_GDAL            = 8,  //如果设置,使用gdal驱动程序加载图像
       IMREAD_REDUCED_GRAYSCALE_2  = 16, //如果设置,总是将图像转换为单通道灰度图像且图像大小减少1/2
       IMREAD_REDUCED_COLOR_2      = 17, //如果设置,总是将图像转换为3通道BGR彩色图像且图像大小减少1/2
       IMREAD_REDUCED_GRAYSCALE_4  = 32, //如果设置,总是将图像转换为单通道灰度图像且图像大小减少1/4
       IMREAD_REDUCED_COLOR_4      = 33, //如果设置,总是将图像转换为3通道BGR彩色图像且图像大小减少1/4
       IMREAD_REDUCED_GRAYSCALE_8  = 64, //如果设置,总是将图像转换为单通道灰度图像且图像大小减少1/8
       IMREAD_REDUCED_COLOR_8      = 65, //如果设置,总是将图像转换为3通道BGR彩色图像且图像大小减少1/8
       IMREAD_IGNORE_ORIENTATION   = 128 //如果设置,不会根据EXIF的方向标志旋转图像
     };

2.cv2.namedWindow(window_name, flag)调整窗口可伸缩性

cv2.namedWindow("hat", cv2.WINDOW_KEEPRATIO)
# 语法: cv2.namedWindow(window_name, flag)
# window_name:将显示图像/视频的窗口的名称
# flag: 表示窗口大小是自动设置还是可调整。
# WINDOW_NORMAL –允许手动更改窗口大小
# WINDOW_AUTOSIZE(Default) –自动 设置窗口大小
# WINDOW_FULLSCREEN –将窗口大小更改为全屏
# WINDOW_FREERATIO    窗口大小自适应比例
# WINDOW_KEEPRATIO    保持图像的比例
# 返回值:它不返回任何东西
# 先使用imread(),后namedWindow(),后imshow(),再imwrite()

3.通道拆分

b = test_img[:, :, 0]  # 分离,引用B通道
g = test_img[:, :, 1]  # 分离,引用G通道
r = test_img[:, :, 2]  # 分离,引用R通道

简单点:

b = cv2.spli(test_img)[0]

g = cv2.spli(test_img)[1]

r = cv2.spli(test_img)[2]

极简:

b, g, r =  cv2.spli(test_img)

通道合并,可以使用:

bgr = cv2.merge([b, g, r])

注意顺序

4.cv2.imwrite(filename, img [, paras])保存图片

retval = cv2.imwrite(filename, img [, paras])
# cv2.imwrite()  只能保存 BGR 3通道图像,或 8 位单通道图像、或 PNG/JPEG/TIFF 16位无符号单通道图像。
# 参数说明:
# filename:要保存的文件的路径和名称,包括文件扩展名
# img:要保存的 OpenCV 图像,nparray 多维数组
# paras:不同编码格式的参数,可选项
# 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),数值越大则压缩比越大。
# retval:返回值,保存成功返回 True,否则返回 False。

5.cv2.resize()调整图像大小

dst = cv.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]])
# 参数	        类型	           是否必须指定	            具体含义
# src	     numpy.ndarray	        是	         原图像
# dsize	     tuple<int>	            是	         缩放后的图像大小
# dst	       无所谓	            否	         目标图像,但是在 Python 里面没有任何意义。                                                
#                                                 一般不传参或者设成 None
# fx, fy	  数值类型	            否	         x 和 y 方向上的缩放比例
# interpolation	int	                否	        插值方式表示代码,本质是一个 int 数值,一般 
#                                                用 OpenCV 内置的参数代号以提高可读性。

6.小测试

代码:

# 该程序读入一张帽子图片,之后展示原图、各通道灰度图、
# 及将B通道赋值0和将BG通道赋值0的图片,并将以上各个图片保存 
import cv2

test_img = cv2.imread(r"DSC_3095.JPG", -1)
# -1原图,0单通道黑白,1三通道彩图
cv2.namedWindow("hat", cv2.WINDOW_KEEPRATIO)
# 语法: cv2.namedWindow(window_name, flag)
# window_name:将显示图像/视频的窗口的名称
# flag: 表示窗口大小是自动设置还是可调整。
# WINDOW_NORMAL –允许手动更改窗口大小
# WINDOW_AUTOSIZE(Default) –自动 设置窗口大小
# WINDOW_FULLSCREEN –将窗口大小更改为全屏
# WINDOW_FREERATIO	窗口大小自适应比例
# WINDOW_KEEPRATIO	保持图像的比例
# 返回值:它不返回任何东西
# 先使用imread(),后namedWindow(),后imshow(),再imwrite()
cv2.imshow("hat", test_img)  # usage:“窗口名称”,引用变量名称
cv2.imwrite("hat.jpg", test_img)
b = test_img[:, :, 0]  # 分离,引用B通道
g = test_img[:, :, 1]  # 分离,引用G通道
r = test_img[:, :, 2]  # 分离,引用R通道
cv2.namedWindow("b", cv2.WINDOW_KEEPRATIO)
cv2.namedWindow("g", cv2.WINDOW_KEEPRATIO)
cv2.namedWindow("r", cv2.WINDOW_KEEPRATIO)
cv2.imshow("b", b)
cv2.imshow("g", g)
cv2.imshow("r", r)
cv2.imwrite("b.jpg", b)
cv2.imwrite("g.jpg", g)
cv2.imwrite("r.jpg", r)
test_img[:, :, 0] = 0  # 修改B通道值为0
cv2.namedWindow("b0", cv2.WINDOW_KEEPRATIO)
cv2.imshow("b0", test_img)  # 修改后的图片
cv2.imwrite("b0.jpg", test_img)
test_img[:, :, 1] = 0  # 修改G通道
cv2.namedWindow("b0g0", cv2.WINDOW_KEEPRATIO)
cv2.imshow("b0g0", test_img)  # 修改后的图片
cv2.imwrite("b0g0.jpg", test_img)
# 具体到实际大小,调整窗口尺寸
# cv2.resizeWindow("hat", 500, 300)
# cv2.resizeWindow("b", 500, 300)
cv2.waitKey()
cv2.destroyWindow()
# 清除所有窗口

代码结果:

 原图:

b通道:

g通道:

r通道:

令B通道为0:

令B,G通道为0:

参考:《计算机视觉40例——从入门到深度学习(OpenCV-Python)》 

单通道灰度图像的保存和超分辨率重建 本文介绍了如何保存单通道灰度图像,并使用超分辨率重建技术提高其分辨率。超分辨率重建是一种图像处理技术,旨在从低分辨率图像中恢复出高分辨率图像。在这个示例中,我们使用EDSR(Enhanced Deep Super-Resolution)模型,并将放大倍数设置为3。在图像处理中,灰度图像是一种只包含灰度值的图像,不包含颜色信息。在本文中,我们将讨论如何保存单通道灰度图像,并介绍如何使用超分辨率重建技术提高其分辨率。保存单通道灰度图像是一个常见的任务,在许多图像处理应用中都需要进行。来将图像以灰度模式加载。 阅读详情

相关推荐

QT+opencv【opencv学习篇】OpenCV 读取、显示和保存图像

OpenCV 允许我们对图像执行多种操作,但要做到这一点,需要读取一个图像文件作为输入,然后我们可以对其执行各种操作。OpenCV 提供了以下用于读取和写入图像的函数。

吻等离子的博客 6258

【OpenCV 例程300篇】02. 图像的保存(cv2.imwrite)

函数 cv2.imwrite() 用于将图像保存到指定的文件。 OpenCV 完整例程 200 篇 01. 图像的读取(cv2.imread) 02. 图像的保存(cv2.imwrite) 03. 图像的显示(cv2.imshow) 06. 像素的编辑(img.itemset) 07. 图像的创建(np.zeros) 08. 图像的复制(np.copy) 09. 图像的裁剪(cv2.selectROI) ...............

youcans的博客 28万+

使用OpenCV改变imshow窗口大小和位置的方法

在使用OpenCV进行图像处理和显示时,我们经常需要调整imshow窗口的大小和位置以适应我们的需求。本文将介绍如何使用OpenCV来改变imshow窗口的大小和位置,并提供相应的源代码示例。在这个示例中,我们首先创建一个名为"Image"的窗口,并将其大小设置为800x600。函数,我们可以方便地改变imshow窗口的大小和位置。该函数接受两个参数,第一个参数是窗口的名称,第二个参数是窗口的位置坐标。函数创建一个名为"Image"的窗口,并将窗口模式设置为。要改变imshow窗口的大小,我们可以使用。

MwgmPhilosophy的博客 2329

利用OpenCV的函数imwrite()保存图像到硬盘

利用OpenCV的函数imwrite()保存图像到硬盘

昊虹AI笔记 7762

数据去重复_京东商品评论情感分析|文本数据预处理

本文爬取了十款热销手机的文本评论数据后,首先对文本评论数据做文本预处理,文本评论数据中存在大量的无价值信息,引入无用的文本数据,对其作情感分析,显然没有价值,得出的文本挖掘结果也不尽人意。所以对于文本评论数据先进行文本预处理是必不可少的一步,把大量的、冗余的、无价值的信息去除,可以极大提高文本数据的质量,精确文本分析结果。1 文本去重1.1文本去重的原因文本数据预处理时,首先应去除文本评论数据中反...

weixin_34556808的博客 2068

Android Termux 安装Kali Linux 或 kali Nethunter史诗级详细教程

Termux 安装kali

风云小虾米的博客 6万+

python3 opencv_python3+Opencv 搭建环境和基本操作

一、必备前提:Python3.5及以上版本、pip、windows环境二、搭建opencv该部分可以创建隔绝的Python环境来引入,参照virtualenv的使用在目标的cmd窗口,依次输入以下命令:pip install --upgrade setuptoolspip install numpy Matplotlibpip install opencv-python如果下载中间出现error或...

weixin_39873356的博客 206

FPGA实战:手把手教你用Verilog驱动4.3寸RGB触摸屏(附完整代码)

本文详细介绍了如何使用Verilog语言在FPGA上驱动4.3寸RGB触摸屏,包括时序设计、信号交互原理及完整代码实现。通过双计数器引擎设计和参数化模块,开发者可以高效构建800*480分辨率的显示驱动,并解决工程实践中的信号完整性和时序收敛问题。

rice5的博客 697

opencv-python(cv2)读取和显示图片的若干问题

读取图片: import cv2 #cv2.IMREAD_COLOR=1彩色方式读入,无透明度,默认;cv2.IMREAD_GRAYSCALE=0灰度方式读入;cv2.IMREAD_UNCHANGED包含alpha通道(透明度) #img = cv2.imread('../material/images/23126-5.jpg',cv2.IMREAD_GRAYSCALE) #img = cv...

do it 6316

FPGA图像处理入门 ZYNQ7020 图像中值膨胀腐蚀滤波

图像处理的三种滤波 中值滤波应用较为广泛 综合膨胀和腐蚀可以实现边缘检测。

Coast_的博客 699

ArcGIS中根据DEM和地形起伏度进行地貌分类划分

大家好我是GIS蒲公英,数字高程模型(digital elevation model, DEM)经常都被用到专题地图的底图中,下面来我们来交流一下仅选择海拔和地形起伏度两个指标,用DEM来进行地貌类型的自动判别划分

GIS蒲公英的博客 3万+

opencv创建图像,图像像素值处理、生成单通道图像和生成tif图像方法的整理

对于 JPEG图片,该参数(cv2.IMWRITE_JPEG_QUALITY)表示图像的质量,用 0-100的整数表示,默认值为 95。对于 PNG图片,该参数(cv2.IMWRITE_PNG_COMPRESSION)表示的是压缩级别,从 0到 9,压缩级别越高,图像尺寸越小,默认级别为 3。注意,该类型为 Long,必须转换成 int。filename表示需要载入的图片路径名,其支持 Windows位图、JPEG文件、PNG图片、便携文件格式、Sun rasters光栅文件、TIFF文件、HDR文件等。

qq_44442727的博客 3753

FortiOS 存在身份验证绕过导致命令执行漏洞(CVE-2024-55591)

FortiOS 是 Fortinet 公司开发的操作系统,作为 Fortinet 安全平台的核心,提供全面的网络安全功能。 它将网络和安全功能无缝集成,支持跨本地、云、混合和融合 IT/OT/IoT 基础设施环境的统一管理。 FortiOS 7.6 版本引入了生成式人工智能助手、数据保护、托管服务和单一代理等新功能,进一步增强了其安全性和性能。

缘梦未来的博客 1836

opencv学习之图像基本操作

传统视觉–opencv的学习(一)

ccccCCccccmm的博客 362

吊打原版YOLOv8!ASF-YOLO多尺度融合+注意力机制实战解析(遥感/医疗/质检均适用)

ASF-YOLO融合YOLOv8的创新目标检测框架摘要 ASF-YOLO是针对小目标检测优化的先进框架,采用三重特征编码器和尺度序列融合技术增强多尺度特征提取能力。核心创新包括: 三重特征编码器(TPE)融合跨层级信息 尺度序列特征融合(SSFF)模块通过3D卷积处理多尺度信息 通道-位置注意力机制(CPAM)聚焦关键特征区域 Zoom_cat模块实现自适应多尺度特征融合 该框架特别适用于医学影像、遥感检测等小目标密集场景,通过动态特征权重调整显著提升检测精度。关键技术实现包含多尺度特征统一、3D卷积序列处

FJN110的博客 520

分布式系统中的“无状态”和“有状态”详解

有状态服务,即服务端需要记录每次会话的客户端信息,从而识别客户端身份,根据用户身份进行请求的处理,典型的设计如 tomcat 中的 session。例如登录:用户登录后,我们把登录者的信息保存在服务端 session 中,并且给用户一个 cookie 值,记录对应的 session。然后下次请求,用户携带 cookie 值来,我们就能识别到对应 session,从而找到用户的信息。

AI天才研究院 2万+

python3+Opencv 搭建环境和基本操作

一、必备前提: Python3.5及以上版本、pip、windows环境 二、搭建opencv 该部分可以创建隔绝的Python环境来引入,参照virtualenv的使用 在目标的cmd窗口,依次输入以下命令: pip install --upgrade setuptools pip install numpy Matplotlib pip install openc...

dianshi0387的博客 394

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

pythonopencv_Python-OpenCV基本操作方法详解

基本属性cv2.imread(文件名,属性) 读入图像属性:指定图像用哪种方式读取文件cv2.IMREAD_COLOR:读入彩色图像,默认参数,Opencv 读取彩色图像为BGR模式 !!!注意cv2.IMREAD_GRAYSCALE:读入灰度图像。cv2.imshow(窗口名,图像文件) 显示图像可以创建多个窗口cv2.waitKey() 键盘绑定函数函数等待特定的几毫秒,看是否由键盘输入。cv...

weixin_39832965的博客 186

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Python-OpenCV基本操作

基本属性 cv2.imread(文件名,属性) 读入图像 属性:指定图像用哪种方式读取文件 cv2.IMREAD_COLOR:读入彩色图像,默认参数,Opencv 读取彩色图像为BGR模式 !!!注意 cv2.IMREAD_GRAYSCALE:读入灰度图像。 cv2.imshow(窗口名,图像文件) 显示图像 可以创建多个窗口 cv2.waitKey() 键盘绑定函数 函数

吃狼的1只羊 1万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

OpenCV、Python 图像处理一 基础、图像的存储格式

可以看出,img这个图片被Open CV读取后变成了“numpy.ndarray”格式,图片维度为2,3,3,第一个数字“2”代表高度为2,第二个数字“3”代表宽度,第三个数字“3”代表图片的“层数”,也就是BGR这3种颜色。彩色图像:opencv里img[0,2]表示第0行第2列上B、G、R三个通道的像素值,img[0,2,2]表示第0行第2列上第2个通道R的像素值。itemset((i,j),a) 或 itemset((i,j,k),a) i,j为行和列,k为彩色图片中的通道,a为新值。

m0_73482095的博客 484

OpenCV:实现图像的负片

基于opencv实现图像的负片

uncle_ll的博客 2664

OpenCV基本操作

OpenCV-Python基本操作OpenCV-Python的简单教程OpenCV的基本介绍OpenCV基本操作读取和存储图片显示图片图像的基本转换颜色变换负片转换亮度与对比度转换 OpenCV-Python的简单教程 OpenCV的基本介绍 OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而...

weixin_44297729的博客 495

Python-OpenCV 图像基本操作

文章目录一、图片 读、写、显示 一、图片 读、写、显示 import numpy as np import cv2 img = cv2.imread('messi5.jpg',0) cv2.imshow('image',img) k = cv2.waitKey(0) if k == 27: # wait for ESC key to exit cv2.destroyAl...

红叶谷 wsp_1138886114的博客 1994

Opencv库学习笔记

1.图片读写 1.1 图片的读入 import cv2 # cv2读入图片 cv2.imread('图片的路径') image = cv2.imread('cat.jpg') # 显示图片 cv2.imshow('the cat', image) # 让图片窗口持续显示,没有加此语句,图片会一闪而过 cv2.watiKey(0) ''' ![在这里插入图片描述](https://img-blog...

qq_42873049的博客 542

自学python人脸识别---第二天

这是小白我第二天学习python人脸识别,我们接着昨天的学习接着进一步深入,当我们导入成功图片后,我们就可以查看导入图片的存储维度,像这样: import cv2 import numpy as np #使用imread()方法读入一个图片 image = cv2.imread(r"C:\Users\W\Desktop\Face\are.jpg") #看一下数据的存储维度 image.shape ...

Hello0_0的博客 469
上一篇: Segment Anything Model (SAM)本地部署,及应用于自己的数据集完成分割
下一篇: CUDA、cudNN版本号,tensorflow对应版本查询
MayYou-HHH
博客等级 码龄4年 478粉丝 70原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值