当Python也来进行修图神器,发现是真的蛮好用的呢!!

今天小编来和大家分享一下Python​在图像处理当中的具体应用,那既然是图像处理,那必然要提到opencv模块了,该模块支持与计算机视觉和机器学习相关的众多算法,并且应用领域正在日益扩展,大致有以下几种领域。

物体识别:通过视觉以及内部存储来进行物体的判断图像分割人脸识别汽车安全驾驶人机交互等等

当然这次小编并不打算将这么高深的内容,今天就从最基本的opencv模块在图像的基本操作上说起。

模块的安装​

模块的安装我们通过都是通过pip命令来进行的。

pip install opencv-pythonpip install opencv-contrib-python

登录后复制

图片的各种操作​

学过线性代数的肯定怼矩阵并不感到陌生。图像本质上来说就是矩阵,灰度图像是一个普通的矩阵,而彩色图像就是一个多维矩阵,我们对于图像的操作可以自然地转换成是对矩阵的操作。

读取图像

首先我们先来读取图像,调用的是cv2.imread()方法,它的语法格式如下:

cv2.imread(filename, flag=1)

登录后复制

其中的flag参数是用来设置读取图像的格式,默认的是1,表示为按照RGB三通道的格式来进行读取,如果设置成0,则表示以灰度图单通道的方式来进行读取,

import cv2import numpy as npimg=cv2.imread('1.jpg', 0)

登录后复制

展示图像

在读取图片之后,我们希望能够将其展示出来,这里用到的函数方法是cv2.imshow(),它的语法格式如下所示

cv2.imshow(name, img)

登录后复制

其参数解释分别如下:

name: 表示的是展示窗口的名字img: 图片的矩阵形式

我们尝试将上面读取的图片展示出来,代码如下

cv2.imshow("grey_img", img)## 如果使用了cv2.imshow()函数,下面一定要跟着一个摧毁窗口的函数cv2.destroyAllWindows()

登录后复制

当我们运行了上述的代码之后,可以发现在一瞬间当中图片弹了出来,但是还没有等我们看清楚图片的样子之后就直接关闭了,原因在于cv2.imshow()函数方法并没有延时的作用,我们添加一个延时的函数,代码如下

import cv2import numpy as npimg = cv2.imread('1.jpg')cv2.imshow("grey_img", img)cv2.waitKey(0)cv2.destroyAllWindows()

登录后复制

output

图片

图片保存

最后我们将图片保存下来,这里用到的函数是cv2.imwrite(),它的语法格式如下

cv2.imwrite(imgname, img)

登录后复制

其参数解释分别如下:

imgname: 要保存的图片的名字img: 图片的矩阵形式

示例代码如下:

import cv2import numpy as npimg = 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 cv2img = cv2.imread('1.jpg')print(img.shape[0]) # 行数print(img.shape[1]) # 列数print(img.shape[2]) # 通道数

登录后复制

output

3083403

登录后复制

可以看到该图片的像素是340*380,通道数是3,而针对灰度图像而言,我们来看一下图片的属性,代码如下:

img = cv2.imread('1_grey.png', 0)print(img.shape)

登录后复制

output

(308, 340)

登录后复制

可以看到对于灰度图像而言,我们就没有看到通道数,只有行数和列数

图像的基本操作​

最后我们来对图像进行一些基本操作,无非就是改变当中的一些像素值,我们导入一张空白的图片,通过修改当中的像素值来往里面添加一个黑点,代码如下

import cv2import numpy as npimg = cv2.imread('2.jpg')(x, y, z) = img.shapefor 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也来进行修图神器,发现是真的蛮好用的呢!!

以上就是当Python也来进行修图神器,发现是真的蛮好用的呢!!的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2240914.html

(0)
上一篇 2025年2月26日 20:28:27
下一篇 2025年2月24日 16:19:26

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论