Python+OpenCV实现基本的图像处理操作

 更新时间:2022年07月11日 10:51:17   作者:俊欣  
说到图像处理,那必然要提到opencv模块了。本文将从最基本的opencv模块在图像的基本操作上说起,利用Python+OpenCV实现图像的读取保存等,感兴趣的可以了解一下

今天小编来和大家分享一下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图像处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python Struct库之pack和unpack举例详解

    Python Struct库之pack和unpack举例详解

    这篇文章主要给大家介绍了关于Python Struct库之pack和unpack的相关资料,pack和unpack在处理二进制流中比较常用的封包、解包格式,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-02-02
  • 一文详解Python中复合语句的用法

    一文详解Python中复合语句的用法

    复合语句是包含其它语句(语句组)的语句;它们会以某种方式影响或控制所包含其它语句的执行。通常,复合语句会跨越多行,虽然在某些简单形式下整个复合语句也可能包含于一行之内。本文就来讲讲Python中复合语句的使用
    2022-07-07
  • Python简单实现的代理服务器端口映射功能示例

    Python简单实现的代理服务器端口映射功能示例

    这篇文章主要介绍了Python简单实现的代理服务器端口映射功能,结合实例形式分析了Python模拟服务器、代理服务器及客户端访问的相关操作技巧,需要的朋友可以参考下
    2018-04-04
  • Django实现auth模块下的登录注册与注销功能

    Django实现auth模块下的登录注册与注销功能

    这篇文章主要介绍了Django实现auth模块下的登录注册与注销功能,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • pandas中read_csv的缺失值处理方式

    pandas中read_csv的缺失值处理方式

    今天小编就为大家分享一篇pandas中read_csv的缺失值处理方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python Matplotlib实现三维数据的散点图绘制

    Python Matplotlib实现三维数据的散点图绘制

    这篇文章主要为大家详细介绍了Python Matplotlib实现三维数据的散点图绘制,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • 跟老齐学Python之集合(set)

    跟老齐学Python之集合(set)

    本文主要内容是要向各位介绍一种新的数据类型:集合(set).彻底晕倒了,到底python有多少个数据类型呢?又多出来了一个.
    2014-09-09
  • pandas 时间格式转换的实现

    pandas 时间格式转换的实现

    这篇文章主要介绍了pandas 时间格式转换的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Python实现隐马尔可夫模型的前向后向算法的示例代码

    Python实现隐马尔可夫模型的前向后向算法的示例代码

    这篇文章主要介绍了Python实现隐马尔可夫模型的前向后向算法,本文通过实例代码给大家讲解的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • python利用platform模块获取系统信息

    python利用platform模块获取系统信息

    这篇文章主要介绍了python利用platform模块获取系统信息,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-10-10

最新评论