计算机视觉学习总结:基本的图像操作和处理(一)

文章介绍了Python的PIL库用于图像处理的基本操作,包括读取图片、灰度转换、图像格式转换、创建缩略图、剪切、旋转、粘贴图像以及调整尺寸。同时提到了Matplotlib库在绘制图表和图像处理上的应用,如绘制点、线、图像轮廓和直方图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PIL:Python图像处理类库

PIL(Python Imaging Library Python,图像处理类库)提供了通用的图像处理功能, 以及大量有用的基本图像操作,比如图像缩放、裁剪、旋转、颜色转换等。

基本操作

1、读取图片及灰度转换

from PIL import Image
#读取照片
img=Image.open('1.jpg')
#灰度转换
img2=Image.open('1.jpg').convert('L')

2、转换图像格式

from PIL import Image
import os
for infile in filelist:
    outfile = os.path.splitext(infile)[0] + ".jpg"
    if infile != outfile:
        try:
            Image.open(infile).save(outfile)
        except IOError:
            print("cannot convert", infile)

Tip:os库主要和路径操作有关

3、创建缩略图

img.thumbnail((128,128))#无返回值,直接在原图进行操作

4、剪切图像

from PIL import Image
from pylab import *
img=Image.open('7.jpg')
#PIL 中指定坐标系的左上角坐标为(0,0)
#裁剪图片
box=(200,200,500,500)
#以(200,200)为左上角,(500,500)为右下角
img2=img.crop(box)

figure()
subplot(1,2,1)
imshow(img)
subplot(1,2,2)
imshow(img2)
axis('off')
show()

7d819e4ba2494f53a8c08b54bb41dc74.png

 5、粘贴图像

from PIL import Image
from pylab import *
img=Image.open('7.jpg')
box=(200,200,500,500)
img2=img.crop(box)

#旋转图像
img3=img2.transpose(Image.ROTATE_180)
#粘贴到原图像
img.paste(img3,box)

figure()
subplot(1,3,1)
imshow(img2)
subplot(1,3,2)
imshow(img3)
subplot(1,3,3)
imshow(img)
axis('off')
show()

f72c6967d0c3482c97eef7cb03e7d977.png

 6、调整尺寸和旋转

out = img.resize((128,128))

out = img.rotate(45)#逆时针旋转

个人对thumbnail与resize区别的理解:

1、thumbnail不改变图片的长宽比,resize改变

2、thumbnail无返回值,resize返回jpg图像

 Matplotlab

我们处理数学运算、绘制图表,或者在图像上绘制点、直线和曲线时,Matplotlib 是个很好的类库,具有比 PIL 更强大的绘图功能。Matplotlib 可以绘制出高质量的 图表,就像本书中的许多插图一样。Matplotlib 中的 PyLab 接口包含很多方便用户 创建图像的函数。

 1、绘制图像、点、线

from PIL import Image
from pylab import *
# 读取图像到数组中
im = array(Image.open('empire.jpg'))
# 绘制图像
imshow(im)
# 一些点
x = [100,100,400,400]
y = [200,500,200,500]
# 使用红色星状标记绘制点
plot(x,y,'r*')
# 绘制连接前两个点的线
plot(x[:2],y[:2])
# 添加标题,显示绘制的图像
title('Plotting: "empire.jpg"')
show()

 

e7376484b9f5418ca4813dfd6d332fd7.png

在绘图时,有很多选项可以控制图像的颜色和样式。使用如下:

76c7452b067144c7b91e4a76bb6f4e42.png

 也可以自己去查询更多使用方法。

 2、图像轮廓和直方图

from PIL import Image
from pylab import *
# 读取图像到数组中
im = array(Image.open('7.jpg').convert('L'))

figure()
#不使用颜色信息
gray()

#绘制轮廓图像
contour(im,origin='image')

#设置图像坐标轴刻度比例相等
axis('equal')
axis('off')

figure()
#绘制直方图
hist(im.flatten(),128)
show()

 98afedc50f1a4e8dab1200a9b979b8a8.png

 

 hist() 函数的第二个参数指定小区间的数目。需要注意的是,因为 hist() 只接受一 维数组作为输入,所以我们在绘制图像直方图之前,必须先对图像进行压平处理。 flatten() 方法将任意数组按照行优先准则转换成一维数组。

3、交互式标注

有时用户需要和某些应用交互,例如在一幅图像中标记一些点,或者标注一些训练数据。

from PIL import Image
from pylab import *
# 读取图像到数组中
im = array(Image.open('7.jpg'))

figure()
imshow(im)
print('Please click 3 points')
#返回一个包含这三个点的坐标列表
x = ginput(3)
print('you clicked:',x)
show()

f175746273474d0eafa0531130b02af0.png

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值