Python opencv图像基本操作学习之灰度图转换
作者:holywangle 发布时间:2023-02-17 09:04:43
把今天的学习的opencv知识先记录一下!
运行环境是:pycharm
话不多说,献上代码再说:
import cv2 # opencv读取的格式是BGR
import matplotlib.pyplot as plt
import numpy as np
# 读取图片;括号里面填写好路径就行!!
img = cv2.imread("./123.jpg")
print(img)
# 图像显示在窗口上面
# cv2.imshow("image", img)
# # 参数代表关闭图片后程序关闭的时间,数字越大时间越久
# cv2.waitKey(0)
# # 窗口关闭
# cv2.destroyAllWindows()
# shape方法:shape返回的是图像的行数,列数,色彩通道数
print(img.shape)
# (1440, 1080, 3)
# 改为灰色,图片转换为灰度图
img = cv2.imread("./123.jpg", cv2.IMREAD_GRAYSCALE)
print("*" * 100)
print(img)
print(img.shape)
# (1440, 1080)
cv2.imshow("image", img)
# 参数代表等待时间
cv2.waitKey(0)
# 窗口关闭
cv2.destroyAllWindows()
# 保存改变
cv2.imwrite("123.jpg", img)
# 查看图片类型
sd = type(img)
print(sd)
# 查看图片的总像素
img.size
print(img.size)
# 查看存储类型
img.dtype
print(img.dtype)
首先我们先读取我们的图片进来!
# 读取图片;括号里面填写好路径就行!!我这里当先目录下我导入的图片
img = cv2.imread("./123.jpg")
跟着我们先尝试一下在打开我们的图片看看!
下面是实现的代码!
# 图像显示在窗口上面
cv2.imshow("image", img)
# 参数代表关闭图片后程序关闭的时间,数字越大时间越久
cv2.waitKey(0)
# 窗口关闭
cv2.destroyAllWindows()
运行之后我的图片是这样的
我们可以看看图片具体的像素数据是怎么样的!
img = cv2.imread("./123.jpg")
print(img)
输出的结果是:
[[[129 129 129]
[129 129 129]
[129 129 129]
...
[ 76 76 76]
[ 77 77 77]
[ 78 78 78]][[129 129 129]
[129 129 129]
[129 129 129]
...
[ 75 75 75]
[ 76 76 76]
[ 77 77 77]][[129 129 129]
[129 129 129]
[129 129 129]
...
[ 74 74 74]
[ 75 75 75]
[ 75 75 75]]...
[[160 160 160]
[160 160 160]
[161 161 161]
...
[ 59 59 59]
[ 60 60 60]
[ 60 60 60]][[160 160 160]
[160 160 160]
[160 160 160]
...
[ 60 60 60]
[ 60 60 60]
[ 60 60 60]][[159 159 159]
[160 160 160]
[160 160 160]
...
[ 60 60 60]
[ 60 60 60]
[ 61 61 61]]]
有亿点点多!哈哈!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
这样完成了第一步!
这里我们顺便介绍一下shape的用法!
# shape方法:shape返回的是图像的行数,列数,色彩通道数
print(img.shape)
# (1440, 1080, 3)
第二步我们想这个彩色图片该改为灰度图片,因为在处理图片的时候有时候需要将图片改变为灰度图
# 改为灰色,图片转换为灰度图
img = cv2.imread("./123.jpg", cv2.IMREAD_GRAYSCALE)
完成这一步其实差不多了,然后呢,和刚刚开始一样
cv2.imshow("image", img)
# 参数代表关闭图片后程序关闭的时间,数字越大时间越久
cv2.waitKey(0)
# 窗口关闭
cv2.destroyAllWindows()
还要补充一下
如果我们将123.jpg这一张图片改为灰度图之后;然后执行保存的话,那我们原先彩色的图片就会改为灰度图了。 变成下面的样子!
# 保存函数
cv2.imwrite("123.jpg", img)
最后我们顺便普及一下几个方法的作用:
# 查看图片类型
sd = type(img)
print(sd)
# 查看图片的总像素
img.size
print(img.size)
# 查看存储类型
img.dtype
print(img.dtype)
今天具体就分享这么多了,如果有上面有什么写错或者想和我交流,可以私信我哦!!!!
扩展:python opencv将图片转为灰度图
使用opencv将图片转为灰度图主要有两种方法,第一种是将彩色图转为灰度图,第二种是在使用OpenCV读取图片的时候直接读取为灰度图
。
将彩色图转为灰度图
import cv2
import numpy as np
if __name__ == "__main__":
img_path = "timg.jpg"
img = cv2.imread(img_path)
#获取图片的宽和高
width,height = img.shape[:2][::-1]
#将图片缩小便于显示观看
img_resize = cv2.resize(img,
(int(width*0.5),int(height*0.5)),interpolation=cv2.INTER_CUBIC)
cv2.imshow("img",img_resize)
print("img_reisze shape:{}".format(np.shape(img_resize)))
#将图片转为灰度图
img_gray = cv2.cvtColor(img_resize,cv2.COLOR_RGB2GRAY)
cv2.imshow("img_gray",img_gray)
print("img_gray shape:{}".format(np.shape(img_gray)))
cv2.waitKey()
img_reisze shape:(337, 600, 3)
img_gray shape:(337, 600)
使用opencv读取图片的时候,默认使用的是BGR来读取图片的,可以看到原始读取的图片是3通道的,经过转换之后变成了单通道。
直接将图片采用灰度图的方式进行读取
import cv2
import numpy as np
if __name__ == "__main__":
img_path = "timg.jpg"
img = cv2.imread(img_path)
#获取图片的宽和高
width,height = img.shape[:2][::-1]
#将图片缩小便于显示观看
img_resize = cv2.resize(img,
(int(width*0.5),int(height*0.5)),interpolation=cv2.INTER_CUBIC)
cv2.imshow("img",img_resize)
print("img_reisze shape:{}".format(np.shape(img_resize)))
#读取灰度图
img_gray = cv2.imread(img_path,cv2.IMREAD_GRAYSCALE)
#将图片缩小便于显示观看
img_gray = cv2.resize(img_gray,
(int(width*0.5),int(height*0.5)),interpolation=cv2.INTER_CUBIC)
cv2.imshow("img_gray",img_gray)
print("img_gray shape:{}".format(np.shape(img_gray)))
cv2.waitKey()
img_reisze shape:(337, 600, 3)
img_gray shape:(337, 600)
来源:https://blog.csdn.net/hhR888888/article/details/127659463
猜你喜欢
- 程序一:负责从字典中随机提取数据,写入一个新文件。(1.php) <?php /* 从字典文件中提取随机值 */
- 一、gfile模块是什么 gfile模块定义在tensorflow/python/platform/gfile.py,但其源代码实现主要位于
- 1.webpack里面配置自动注册组件第一个参数是匹配路径,第二个是深度匹配,第三个是匹配规则const requireComponent
- 还是分析一下大体的流程:首先还是Chrome浏览器抓包分析元素,这是网址:https://www.douyu.com/directory/a
- 前言系统自带的数据表格,使用时通过sns.load_dataset('表名称')即可,结果为一个DataFrame。prin
- 方式1:引入普通的js文件,如user.js1.1、属性和方法都写在一个变量内部const user={ logi
- 1.使用jobsName.ini文件保存要创建job的名字jobs1jobs2jobs32.使用Jenkins创建job时自动生成的conf
- 因为我们现在的前端框架做性能优化,为了找到各个组件及框架的具体解析耗时,需要在框架中嵌入一个耗时测试工具,性能测试跟不同的计算机硬件配置有很
- 触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程。触发器主要是通过事件进行触发被自动调用执行的。而存储过程可以通过存储过程的
- 一.在浏览器当中输入以下地址https://dev.mysql.com/downloads/mysql/二.进入以下界面:直接点击下面位置
- 一、选取网址进行爬虫本次我们选取pixabay图片网站url=https://pixabay.com/二、选择图片右键选择查看元素来寻找图片
- 本文实例为大家分享了python定时关机的具体代码,供大家参考,具体内容如下# coding: utf-8import sysimport
- Python3,开一个线程,间隔1秒把一个递增的数字写入队列,再开一个线程,从队列中取出数字并打印到终端#! /usr/bin/env py
- websocket在vue2中的封装使用先说需求: 页面中有websocket连接,进入的时候发送参数到后端,后端发送消息, 离开页面时发送
- 本文实例讲述了php查询mysql数据库并将结果保存到数组的方法。分享给大家供大家参考。具体分析如下:这里主要用到了mysql_fetch_
- <% '测试读取MySql数据库的内容strconnection="driver={mysql odbc 3.51 dri
- 本文实例讲述了Python向Excel中插入图片的简单实现方法。分享给大家供大家参考,具体如下:使用Python向Excel文件中插入图片,
- 开通QQ邮箱POP3/SMTP服务登录QQ邮箱网址,进入设置选择账户tab页翻到最低下开启此服务获取qq邮箱授权码搭建node接口服务思路创
- 目录图像翻转图像轮廓排序图像轮廓排序颜色识别基础颜色识别根据BGR获取HSV阈值编辑器图像翻转使用Python的一个包,imutils。使用
- MySql版本问题sql_mode=only_full_group_by查看sql_modeselect @@sql_mode查询出来的值为