python学opencv|读取图像(五)读取灰度图像像素

【1】引言

前序学习了图像的基本读取,掌握了imread()、imshow()和imwrite()函数的基本功能和使用技巧,参考文章链接为:

python学opencv|读取图像-CSDN博客

然后陆续掌握了彩色图像保存、图像放大和缩小以及对imshow()函数的大胆尝试技巧,相关文章见下述链接:

python学opencv|读取图像(二)保存彩色图像_python opencv 读取图像转为彩色-CSDN博客

python学opencv|读取图像(三)放大和缩小图像_python cv 调整图像大小-CSDN博客

python学opencv|读取图像(四)imshow()函数尝试-CSDN博客

在此基础上,我们对图片大小、像素、灰度等基本概念具备了一定了解,今天就来读取一下以进行深度学习。

【2】读取像素

图像具有一些基本属性,像素是其中之一。像素属性包括垂直和水平方向上的像素大小、像素总个数等基本类型。

读取图像的像素属性,应分别调用下述函数实现目标:

【a】shape函数读取垂直和水平方向上的像素大小;

【b】size函数读取总像素个数;

【c】dtype函数读取图像的数据类型(不是本次重点,之后再细究)。

以下图为例,图片截自CSDN页面,我们先将其读取,然后转化为灰度图,再输出像素属性。

b9f27cb22ee64571ac9da6939b7c7f20.png

图1

【2.1】读和显示图片

图片放置在project所在的位置,读取图片的程序为:

import cv2 as cv #引入cv2模块
image=cv.imread("cv019.png",0) #读取图片,将其转化为灰度图
cv.imshow('cvtest',image) #显示为灰度图
cv.waitKey() #图片显示时间
cv.destroyAllWindows() #释放所有窗口

在imread(photoname,colorpar)函数中,photoname代表要读取的图片的名字,colorpar=0时就会输出灰度图片,细节如下:

image=cv.imread("cv019.png",0) #读取图片,将其转化为灰度图

上述代码还可以优化一下,万一图片位置放错了,可能读不到,所以就需要给假设条件,把代码写为新形式:

import cv2 as cv #引入cv2模块
image=cv.imread("cv019.png",0) #读取图片,将其转化为灰度图
if image is not None: #成功读取图片cv.imshow('cvtest', image)  # 显示为灰度图cv.waitKey()  # 图片显示时间cv.destroyAllWindows()  # 释放所有窗口
else: #未找到图片print("Error: 图片无法加载")

2.1节内部的两个程序,在图片位置正确的前提下,输出都是一张灰度图,参考图2。

【2.3】保存灰度图片

在上述基础上,增加一行保存图片代码:

cv.imwrite('opencv-gray.jpg', image) #保存灰度图

增加后的完整代码为:

import cv2 as cv #引入cv2模块
image=cv.imread("cv019.png",0) #读取图片,将其转化为灰度图
if image is not None: #成功读取图片cv.imshow('cvtest', image)  # 显示为灰度图cv.imwrite('opencv-gray.jpg', image) #保存灰度图cv.waitKey()  # 图片显示时间cv.destroyAllWindows()  # 释放所有窗口
else: #未找到图片print("Error: 图片无法加载")

运行代码后的输出图像为:

afe570c4cdf649198d1284797d08a4c1.jpeg

图2

【2.2】读取像素属性

在上述基础上,增加代码以读取像素属性:

shape= image.shape
size = image.size
dtype= image.dtype
print('像素大小shape=',shape)
print('总像素个数size=',size)
print('图像数据类型dtype=',dtype)

此时的输出会增加下述内容:

c3debfa930e84d439d3d52745de30300.png

图3

此时的完整代码为:

import cv2 as cv #引入cv2模块
image=cv.imread("cv019.png",0) #读取图片,将其转化为灰度图
if image is not None: #成功读取图片cv.imshow('cvtest', image)  # 显示为灰度图cv.imwrite('opencv-gray.jpg', image) #保存灰度图shape= image.shapesize = image.sizedtype= image.dtypeprint('像素大小shape=',shape)print('总像素个数size=',size)print('图像数据类型dtype=',dtype)cv.waitKey()  # 图片显示时间cv.destroyAllWindows()  # 释放所有窗口
else: #未找到图片print("Error: 图片无法加载")

【3】总结

成功掌握灰度图像像素读取技巧。

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/63483.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于yolov8的SAR影像目标检测系统,支持图像、视频和摄像实时检测【pytorch框架、python源码】

更多目标检测、图像分类识别、目标追踪等项目可看我主页其他文章 功能演示: 基于yolov8的SAR影像目标检测系统,支持图像、视频和摄像实时检测【pytorch框架、python源码】_哔哩哔哩_bilibili (一)简介 基于yolov8的SAR影像目标…

2.Flink的项目初始化和Hello-world

目录 1.Flink项目初始化 2.Hello-world 1.Flink项目初始化 新建maven项目或者gradle项目&#xff0c;这里使用maven项目为例。 在项目的pom.xml文件中添加Flink依赖&#xff0c;如下所示&#xff0c;为Hello-World例子的最小依赖&#xff1a; <properties><maven.c…

ESP32开发 云调试

https://blog.csdn.net/weixin_43794311/article/details/128722001 VScode支持的仿真平台 https://docs.wokwi.com/zh-CN/vscode/getting-started 编译&#xff1a;Ctrl Alt B上传并重启模拟器&#xff1a;CtrlShifB Wokwi:Start Simulator调试&#xff1a;CtrlShifB Wokwi…

如何写出一篇好的论文?

写出一篇好的论文需要综合多方面的要素&#xff0c;从选题到最终成文&#xff0c;每一步都至关重要。首先&#xff0c;明确研究主题和目标&#xff0c;确保选题具有创新性、可行性和实际意义。接着&#xff0c;进行深入的文献检索和综述&#xff0c;了解当前领域的研究现状和前…

模版方法模式的理解和实践

在软件开发中&#xff0c;设计模式为我们提供了一套经过验证的解决方案&#xff0c;用于解决常见的设计问题。其中&#xff0c;模版方法模式&#xff08;Template Method Pattern&#xff09;是一种行为设计模式&#xff0c;它定义了一个算法的框架&#xff0c;并允许子类在不改…

洛谷【排序】算法的题单 - 笔记

2024-12-09 - 第 37 篇 洛谷【排序】题单 - 笔记 作者(Author): 郑龙浩 / 仟濹(CSND账号名) 洛谷【排序】题单合集 一、排序算法都有… 1. 简单排序算法 这些算法通常是基础的排序方法&#xff0c;容易理解和实现&#xff0c;但效率较低&#xff0c;适用于数据量较小的情况…

MySQL--》如何在SQL中巧妙运用函数与约束,优化数据处理与验证?

目录 函数使用 字符串函数 数值函数 日期函数 流程函数 约束 函数使用 函数是指一段可以直接被另一段程序调用的程序或代码&#xff0c;在mysql当中有许多常见的内置函数&#xff0c;接下来开始对这些内置函数及其作用进行简单的讲解和使用&#xff1a; 字符串函数 my…

归有光,情感与真实的独行者

归有光&#xff0c;字熙甫&#xff0c;号震川&#xff0c;生于明孝宗弘治十年&#xff08;公元1507年&#xff09;&#xff0c;卒于明穆宗隆庆五年&#xff08;公元1571年&#xff09;&#xff0c;享年64岁。他是中国明代著名的散文家、文学家和史学家&#xff0c;其散文风格清…

Python + OpenCV 系列:图像阈值处理

文章目录 引言 1. 阈值处理的基本概念2. OpenCV 中的阈值处理3. 常见的阈值类型3.1 二值化阈值3.2 反向二值化阈值3.3 截断阈值3.4 平滑阈值 4. 自适应阈值5. Otsu’s 阈值法6. 阈值处理的应用场景7. 总结 引言 图像阈值处理是计算机视觉和图像处理中一种非常基础而重要的技术…

计算机网络-Wireshark探索ARP

使用工具 Wiresharkarp: To inspect and clear the cache used by the ARP protocol on your computer.curl(MacOS)ifconfig(MacOS or Linux): to inspect the state of your computer’s network interface.route/netstat: To inspect the routes used by your computer.Brows…

Vue3小兔鲜电商项目

创建项目 npm install 装包

【NLP 12、深度学习15条调参经验】

反正是绚烂&#xff0c;反正是到来 反正是背负慢慢凋残的孤独 耀眼的孤独&#xff0c;义无反顾的孤独 —— 24.12.9 深度学习15条调参经验 1.调参 调参是锦上添花的事&#xff0c;而底线取决于模型的选择和数据的清洗 2.关于model ① 尽量不要自己手写模型&#xff0c;找一…

美畅物联丨视频接入网关如何配置 HTTPS 证书

在安防领域&#xff0c;视频接入网关&#xff08;Video Access Gateway&#xff0c;VAG&#xff09;是视频监控系统的重要组成部分&#xff0c;其职责是把视频数据从前端设备传输至后端服务器。配置HTTPS证书后&#xff0c;可对视频流进行加密传输&#xff0c;避免数据在网络传…

fastcam编程套料软件

Fastcam是一款功能强大的专业软件&#xff0c;以下是对它的具体介绍&#xff1a; 基本信息 • Fastcam自1982年推出首个交互式CNC编程和套料系统后&#xff0c;一直不断更新发展. • 它是为数控火焰、等离子、激光和水射流切割机等数控切割机开发的编程套料软件. 主要功能模…

【大语言模型】LangChain ModelsIO与Models I/O Promopts详解

【大语言模型】LangChain ModelsIO与Prompts详解 一、LangChain ModelsIO1、简介2、Models I/O 的应用场景3、Models I/O 主要模块3.1、Prompts3.2、Modelsa、MESSAGES 类型 3.3、Output Parsers 二、LangChain ModelsIO Prompts1、简介2、Prompts 的优点3、实战示例3.1、Promp…

MicroBlaze软核开发(三):DDR + FLASH

实现功能&#xff1a;使用 MicroBlaze软核&#xff0c;配置 DDR、Flash 接口&#xff0c;并将程序烧写固化到Flash&#xff0c;每次启动 FPGA 时自动运行 Flash 中的程序 。 Vivado版本&#xff1a;2018.3 FPGA&#xff1a;Xilinx Artix-7 系 目录 引言 Vivado部分&#xff1…

Springboot(五十三)SpringBoot3整合redisson

前边我们有记录Springboot2/3整合redis的方式。是基于Springboot默认集成的Lettuce客户端实现的。 今天我们在项目中集成的redission是在Lettuce之上构建的redis客户端。 Redisson:一个在Jedis和Lettuce之上构建的Redis客户端。提供了一系列分布式Java对象和服务,比如:分布式…

渗透测试基础

渗透测试基础是指对计算机系统、网络或应用程序进行模拟攻击&#xff0c;以发现其安全漏洞和潜在威胁的一种安全评估技术。通过模拟真实的攻击场景&#xff0c;渗透测试帮助组织了解其系统的安全弱点、验证防护措施的有效性&#xff0c;并提供改进建议。 渗透测试的核心概念 1…

ejb组件(rmi) webservice平台(xml)

springboot bean 在 Spring Boot 中&#xff0c;Bean 是 Spring 框架的核心概念之一&#xff0c;表示由 Spring 容器管理的对象。通过 Bean 或其他注解&#xff08;如 Component、Service、Repository 等&#xff09;来定义和管理这些对象。以下是关于 Spring Boot 中 Bean 的…

11.23[大数据]

PRO1:LSTM模型预测输出都是同一个值&#xff1f; 画出来的图像就是一条横线 这个搜了搜&#xff0c;原因可能有很多&#xff0c;但感觉最主要的原因极可能是激活函数选择不当&#xff0c;以及层的搭建不合适 原模型是 REF https://zhuanlan.zhihu.com/p/654325094 https:/…