# 如何使用Python+OpenCV实现基本的图像处理

> 作者/来源: UCloud 运营管理员
> 发布时间: 2022-10-12T02:09:00.000Z
> 分类: AI专区
> 标签: AI, 安全, Python
> 原文链接: http://117.50.162.249:3000/yun/articles/2351

---

# 如何使用Python+OpenCV实现基本的图像处理

> 来源: https://www.ucloud.cn/yun/127996.html
> 作者: 89542767
> 发布日期: 发布于2022-10-12 10:09

小编写这篇文章的主要目的，还是来给大家讲解关于Python的一些实例，比如会涉及到一些机器学习的内容，比如去处理基本的图像，那么，它的一个操作步骤是什么呢？下面小编给大家做出一个详细解答。

　　今天小编给大家分析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

![01.png](https://ucloud-blog.cn-bj.ufileos.com/articles/127996/images/127996_000.png)

**图片保存**

　　最后我们将图片保存下来，这里用到的函数是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

![02.png](https://ucloud-blog.cn-bj.ufileos.com/articles/127996/images/127996_001.png)

　　综上所述，关于python+opencv就为大家介绍到这里了，希望能给带来更多的帮助。