欢迎访问宙启技术站
智能推送

如何编写Python函数进行图像处理

发布时间:2023-05-22 07:57:15

Python是一种非常强大的编程语言,可以用于许多不同的领域,尤其是图像处理。掌握Python图像处理技巧,可以让您更加高效地处理和操作图像,使您的工作更加简单方便。本文将向您介绍如何编写Python函数进行图像处理,帮助您提高图像处理技术,提升工作效率。

一、导入Python图像处理库

在Python进行图像处理前,首先需要导入Python的图像处理库,其中最常用的就是OpenCV和Pillow。OpenCV主要用于计算机视觉,包含了人工智能、图像处理、模式识别等领域,而Pillow则是专门用于处理图像的Python库。在本文中我们将使用两个库来展示如何编写Python函数进行图像处理。

1、 导入OpenCV库

import cv2

2、 导入Pillow库

from PIL import Image

二、图像读取

完成了库的导入,就可以开始读取图像了。需要使用库的读取方法对图像文件进行读取。首先我们看一下使用OpenCV读取图像的代码。

img = cv2.imread('test.jpg')

cv2.imshow('image', img)

cv2.waitKey(0)

cv2.destroyAllWindows()

以上代码使用cv2.imread()方法读取图像文件,并使用cv2.imshow()方法将读取的图像文件显示出来,使用cv2.waitKey(0)方法等待用户按下键盘,最后使用cv2.destroyAllWindows()方法关闭窗口。

接下来我们看一下使用Pillow库读取图像的代码。

img = Image.open('test.jpg')

img.show()

以上代码使用Image.open()方法读取图像文件,并使用Image.show()方法将读取的图像文件显示出来。

三、图像截取

对于需要操作的图像,我们有时需要对其进行截取。可以使用Python的切片方法来实现图像的截取。以下是OpenCV库和Pillow库实现图像截取的方法。

1、 使用OpenCV实现图像截取

import cv2

def image_cut():

    img = cv2.imread('test.jpg')

    cut_img = img[100:200, 100:200]

    cv2.imshow('cut', cut_img)

    cv2.waitKey(0)

    cv2.destroyAllWindows()

以上代码使用cv2.imread()方法读取图像文件,并使用切片方法对图像进行截取。cut_img= img[100:200, 100:200] 表示对图像进行截取,选择从第100行到第200行,第100列到第200列的像素点,实现对图像的截取操作。运行脚本可以看到截取后的图像。

2、 使用Pillow实现图像截取

from PIL import Image

def image_cut():

    img = Image.open('test.jpg')

    cut_img = img.crop((100,100,200,200))

    cut_img.show()

以上代码使用Image.open()方法读取图像文件,并使用Image.crop()方法对图像进行截取。cut_img = img.crop ((100,100,200,200)) 表示对图像进行截取,选择从第100行到第200行,第100列到第200列的像素点,实现对图像的截取操作。运行脚本可以看到截取后的图像。

四、图像旋转

除了图像截取以外,图像在操作时还经常需要进行旋转。Python中也可以使用OpenCV库和Pillow库实现图像旋转。

1、使用OpenCV实现图像旋转

import cv2

def image_rotation():

    img = cv2.imread('test.jpg')

    rows, cols = img.shape[:2]

    M = cv2.getRotationMatrix2D((cols / 2, rows / 2), 45, 1)

    img_rotate = cv2.warpAffine(img, M, (cols, rows))

    cv2.imshow('rotate', img_rotate)

    cv2.waitKey(0)

    cv2.destroyAllWindows()

以上代码先使用cv2.imread()方法读取图像文件,并使用cv2.getRotationMatrix2D()方法获取到图像旋转所需要的旋转矩阵,然后使用cv2.warpAffine()方法将图像进行旋转,最后使用cv2.imshow()方法将旋转后的图像显示出来,使用cv2.waitKey(0)等待用户按下键盘,最后使用cv2.destroyAllWindows()方法关闭窗口。

2、使用Pillow实现图像旋转

from PIL import Image

def image_rotation():

    img = Image.open('test.jpg')

    img_rotate = img.rotate(45)

    img_rotate.show()

以上代码使用Image.open()方法读取图像文件,并使用Image.rotate()方法对图像进行旋转,最后使用Image.show()方法将旋转后的图像显示出来。

五、图像缩放

在图像处理过程中,有时需要对图像进行缩放。同样,Python中也可以使用OpenCV库和Pillow库实现图像缩放。

1、使用OpenCV实现图像缩放

import cv2

def image_scale():

    img = cv2.imread('test.jpg')

    img_small = cv2.resize(img, (300, 200))

    cv2.imshow('scale', img_small)

    cv2.waitKey(0)

    cv2.destroyAllWindows()

以上代码使用cv2.imread()方法读取图像文件,并使用cv2.resize()方法对图像进行缩放,将图像缩放为300*200大小,最后使用cv2.imshow()方法将缩放后的图像显示出来,使用cv2.waitKey(0)等待用户按下键盘,最后使用cv2.destroyAllWindows()方法关闭窗口。

2、使用Pillow实现图像缩放

from PIL import Image

def image_scale():

    img = Image.open('test.jpg')

    img_small = img.resize((300, 200))

    img_small.show()

以上代码使用Image.open()方法读取图像文件,并使用Image.resize()方法对图像进行缩放,将图像缩放为300*200大小,最后使用Image.show()方法将缩放后的图像显示出来。

结语

以上就是本次 Python 函数进行图像处理的内容介绍,通过以上例子,我们可以看到 Python 中进行图像处理所需要的方法非常繁琐,但是掌握好这些方法可以使您更加高效地处理和操作图像,使您的工作更加简单方便。建议大家多进行实践,不断提高图像处理技巧,提升工作效率。