苦学Opencv的第二天:图像处理的基本操作

Python OpenCV入门到精通学习日记:图像处理基础操作

今天主要是学习了Python OpenCV库在图像处理中的基础操作。OpenCV是一个强大的计算机视觉库,它让图像处理变得简单而高效。我们将通过一系列的实例来学习如何读取、显示、保存图像以及获取图像属性。

前言

在开始前我先说明一下我的项目目录,这样看后面的内容会明了一些

opencv_program/
|—— .venv/              # 虚拟环境文件夹,用于Python项目的依赖管理
|—— Pictures/           # 图片文件夹,存放项目相关的图片文件
|    |—— women.jpg      # 图片文件
|—— ImageTest.py        # Python脚本文件,用于OpenCV图像处理测试
|—— img.png             # 图片文件

1. 读取图像

使用cv2.imread()函数可以轻松读取图像。这个函数接受两个参数:文件名和读取标记。文件名是你要读取的图像的完整路径,而读取标记则指定了读取图像的方式。

import cv2
# 读取图像
filename = "img.png"
flags = 1 # 如果要读取图像的灰度图像,则设置为0
img = cv2.imread(filename, flags) # !!!后续出现的img全部都是这个定义的img
print(img)

其中,flags参数为1时,读取彩色图像;为0时,读取灰度图像。print(img)将会输出img.png的部分像素值。
不同路径表达方式:
image = cv2.imread("D:/3.1.jpg") # 路径中不能出现中文
“D:/3.1.jpg"等价于"D:\\3.1.jpg”。

2. 显示图像

读取图像后,我们可以使用cv2.imshow()函数在窗口中显示图像。cv2.waitKey()函数用于等待用户输入,当用
户按下键盘上的任意按键时,将执行waitKey()方法,并且获取waitKey()方法的返回值。参数以毫秒为单位设置等待时间。cv2.destroyAllWindows()则用于关闭所有窗口。

cv2.imshow("women", img)  # 显示图像
"""
cv2.imshow(winname, mat)
参数说明:
 winname:显示图像的窗口名称。
 mat:要显示的图像。
"""
cv2.waitKey()  # 等待键盘输入
"""
retval = cv2.waitKey(delay)
参数说明:
  retval:与被按下的按键对应的ASCII码。例如,Esc键的
ASCII码是27,当用户按Esc键时,waitKey()方法的返回值
是27。如果没有按键被按下,waitKey()方法的返回值
是-1。
  delay:等待用户按下键盘上按键的时间,单位为毫秒
(ms)。当delay的值为负数、0或者空时,表示无限等待
用户按下键盘上按键的时间。
"""
cv2.destroyAllWindows()  # 关闭窗口

如果想设置窗口显示图像的时间为5s,又该如何编写代码呢?
只需将代码:
cv2.waitKey()
修改为如下代码:
cv2.waitKey(5000)

注意:显示图像的窗口名称不能使用中文,否则会出现乱码。

3. 保存图像

cv2.imwrite()函数允许我们保存图像到指定路径。

cv2.imwrite("./Pictures/women.jpg", img)  # 保存图像
"""
cv2.imwrite(filename, img)
参数说明:
 filename:保存图像时所用的完整路径。
 img:要保存的图像。
"""

4. 获取图像属性

我们可以获取图像的形状、大小和数据类型,这些属性对于图像处理非常重要。

print("获取彩色图像的属性:")
print("shape=", img.shape)
print("size=", img.size)
print("dtype=", img.dtype)
image_Gray = cv2.imread("img.png",0)
print("获取的灰度图像的属性:")
print("shape=",image_Gray.shape)
print("size=",image_Gray.size)
print("dtype=",image_Gray.dtype)

shape:它是一个包含图像水平像素,垂直像素和通道数的数组,如果是灰度图像,通道数为1。
size:它是图像包含的像素个数,其值为“水平像素×垂直像素×通道数”。
dtype:它是图像的数据类型。
上述代码运行将会获得:

>>> 获取彩色图像的属性:
    shape= (372, 383, 3)
    size= 427428
    dtype= uint8
    获取的灰度图像的属性:
    shape= (372, 383)
    size= 142476
    dtype= uint8

小结

这些基础操作是OpenCV图像处理的基石。通过这些操作,我们可以轻松地处理和分析图像数据,为更高级的图像处理任务打下坚实的基础。

在完成图像处理的基本操作的过程中,要注意两个问题:一是通过更改参数,imread()方法读取到的图像既可以是一幅彩色图
像,也可以是一幅灰度图像;二是为了能够正常显示图像,要在cv2.imshow()方法后紧跟着cv2.waitKey()方法,还有就是关于retval的使用,可以指定某个键来执行cv2.waitKey()。

明天准备学像素的操作,冲!!!

  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值