Python OpenCV基础:图像读取、显示与属性获取
本文介绍如何使用Python的OpenCV库进行基础图像处理。涵盖模块安装、图像读取(cv2.imread)、显示(cv2.imshow)及保存(cv2.imwrite)的具体操作,并详解如何获取图像的像素尺寸、通道数等属性,适用于计算机视觉初学者。
本文将介绍Python在图像处理领域的具体应用。作为核心工具,opencv模块支持众多与计算机视觉及机器学习相关的算法,其应用领域正不断扩展,主要涵盖以下几个方面
- 物体识别:结合视觉特征与内部存储数据进行物体判定
- 图像分割
- 人脸识别
- 汽车安全驾驶辅助
- 人机交互系统
- 其他应用场景
本文不深入探讨上述复杂内容,而是从opencv模块的基础图像操作入手进行讲解
模块的安装
模块的安装通常通过pip命令完成
pip install opencv-python
pip install opencv-contrib-python图片的各种操作
熟悉线性代数的人对矩阵概念并不陌生。图像本质上即为矩阵:灰度图像对应普通矩阵,彩色图像则对应多维矩阵。因此,对图像的操作可自然转化为对矩阵的运算
读取图像
首先进行图像读取,调用cv2.imread()方法,其语法格式如下
cv2.imread(filename, flag=1)其中flag参数用于设置读取图像的格式。默认值为1,表示按RGB三通道格式读取;若设置为0,则以灰度图单通道方式读取
import cv2
import numpy as np
img=cv2.imread('1.jpg', 0)展示图像
cv2.imshow(name, img)
其参数解释分别如下:
- name: 表示展示窗口的名称
- img: 图片的矩阵形式
尝试将上述读取的图片展示出来,代码如下
cv2.imshow("grey_img", img)
## 如果使用了cv2.imshow()函数,下面一定要跟着一个摧毁窗口的函数
cv2.destroyAllWindows()运行上述代码后,图片会瞬间弹出并立即关闭,原因在于cv2.imshow()函数方法本身没有延时功能。我们需要添加一个延时函数,代码如下
import cv2
import numpy as np
img = cv2.imread('1.jpg')
cv2.imshow("grey_img", img)
cv2.waitKey(0)
cv2.destroyAllWindows()output

图片保存
最后将图片保存下来,这里用到的函数是cv2.imwrite(),它的语法格式如下
cv2.imwrite(imgname, img)
其参数解释分别如下:
- imgname: 要保存的图片的文件名
- img: 图片的矩阵形式
示例代码如下
import cv2
import numpy as np
img = cv2.imread('1.jpg')
cv2.imshow("grey_img", img)
cv2.waitKey(0)
cv2.imwrite('1.png', img)
cv2.destroyAllWindows()图片的各种属性
有时我们需要了解图片的像素大小。由于图片本质是矩阵,例如一张1024像素*960像素的图片,意味着矩阵中有960行、1024列。在opencv模块中调用shape()函数方法,代码如下
import cv2
img = cv2.imread('1.jpg')
print(img.shape[0]) # 行数
print(img.shape[1]) # 列数
print(img.shape[2]) # 通道数output
308 340 3
可以看到该图片的像素是340*380,通道数是3。针对灰度图像,我们来看一下图片的属性,代码如下
img = cv2.imread('1_grey.png', 0)
print(img.shape)
output
(308, 340)
可以看到对于灰度图像而言,我们就没有看到通道数,只有行数和列数
图像的基本操作
最后我们来对图像进行一些基本操作,无非就是改变当中的一些像素值。我们导入一张空白的图片,通过修改当中的像素值来往里面添加一个黑点,代码如下
import cv2
import numpy as np
img = cv2.imread('2.jpg')
(x, y, z) = img.shape
for i in range(-10, 10):
for j in range(-10, 10):
# 图片的正中心的位置来改变像素值,
img[int(x/2) + i, int(y/2) + j] = (0, 0, 0)
cv2.imshow("img", img)
cv2.waitKey(0)
cv2.destroyAllWindows()output

到此这篇关于Python+OpenCV实现基本的图像处理操作的文章就介绍到这了,更多相关Python OpenCV图像处理内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













