一、简单图像处理

这里我们需要安装opencv-python的包,可以使用下面的代码,也可以直接用pycharm创建一个python文件,然后import cv2,这时pycharm会跳出一个警告提示,点击那个感叹号,我们可以找到一个安装opencv_python的选项,我们就能够安装opencv_python的包

pip install opencv_python

打开图像

此处我们导入cv2的包和numpy的包,用imread来打开图像,如果将img打印出来之后,就可以看到具体的数值

import cv2
import numpy as np
#读取同目录下的dog.jpg的文件,并获取其中的像素值
img=cv2.imread("dog.jpg",cv2.IMREAD_COLOR)

保存图像

此处我们使用imwrite的代码,来将我们之前的img保存为dog_1.jpg文件,

保存成功会返回TRUE值 

img1=cv2.imwrite("dog_1.jpg",img)

图像颜色的反转

此处我们用到了之前导入的numpy包中的array数组的功能,我们将img中的每一个数值替换为255-原来的图像数据。(此处的array数组是有广播功能能的,虽然array数组中只用255一个元素,但是对于img中的每一个元素,都会用255减去img中原来的数组)。然后我们将img2的图像保存为dog_1.jpg图像。

#反转
img2=np.array([255])-img
cv2.imwrite("dog_1.jpg",img2)

 

此处为广播功能的演示 

arr1=np.array([255])
arr2=np.array([1,2,3,45])
print(arr1+arr2)

 将图片变成灰色

我们先创建一个一维的有326*500全是0的一维数组,然后用reshape方法将其改造成一个326*500的二维数组。

i的范围是0到325(len(img3)就是统计img3的行数)

j的范围是0到499(len(img3[0])就是统计img3方阵中第0行的元素个数,也就是列数)

这里我们之前的img数据中的每一个img[i,j]元素都是有RGB三个值,此处我们计算RGB的平均值作为我们img3数据中的数值,就可以得到我们的灰色图像的数据

我们再用imwrite写入dog_2.jpg的文件中,就可以得到我们的灰色图像。

#灰度
img3=np.array([0]*326*500).reshape(326,500)
for i in range(len(img3)):
    for j in range(len(img3[0])):
        img3[i,j]=img[i,j].mean()
cv2.imwrite("dog_2.jpg",img3)

图像的二值化 

将图像中的灰度值设置为0-255,整个图像就会呈现出明显的黑白效果,使图像中的轮廓突出

在下面的代码中,我们利用numpy的功能,将我们上一个代码中已经完成灰度化的图像数据img3中,大于127的灰度值变为255,否则就变成0。

然后我们用imwrite就能img4的图像保存

#二值化
img4=np.where(img3>127,255,0)
cv2.imwrite("dog_3.jpg",img4)

 

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐