目录
灰色度
灰度是指图像中每个像素的亮度值,用来描述图像中各个像素的明暗程度。在计算机视觉中,灰度可以通过以下方式来计算:
平均值法:将图像中每个像素的RGB值(红、绿、蓝)相加,然后除以3,得到灰度值。
加权平均法:将图像中每个像素的RGB值分别乘以不同的权重,然后相加,得到灰度值。常用的权重是:红色权重为0.299,绿色权重为0.587,蓝色权重为0.114。
单一通道法:将图像中的一个通道(一般选择红色通道、绿色通道或蓝色通道)的像素值作为灰度值。
这些方法都可以用来计算图像的灰度值,根据具体的应用场景和需求,选择合适的方法进行灰度计算。
python
# -*- coding: utf-8 -*-
from PIL import Image
from pylab import *
# 添加中文字体支持
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc", size=14)
figure()
pil_im = Image.open(r"图片路径")
gray()
subplot(121)
title(u'原图',fontproperties=font)
axis('off')
imshow(pil_im)
pil_im = Image.open("图片路径").convert('L')
subplot(122)
title(u'灰度图',fontproperties=font)
axis('off')
imshow(pil_im)
show()
缩略图
缩略图是指按照一定比例或尺寸将原始图像进行压缩和裁剪后得到的小尺寸图像,用于快速展示大尺寸原始图像的预览效果。在计算机视觉中,生成缩略图可以有以下几种方式:
等比例缩放法:按照设定的比例将原始图像的宽度和高度同时缩小,保持原始图像的宽高比。这样可以得到一个缩小的图像,保持了原始图像的比例。
固定尺寸缩放法:按照设定的固定宽度或高度将原始图像进行缩放,可能会导致图像的宽高比失衡。
裁剪压缩法:将原始图像按照设定的比例进行裁剪,然后再进行等比例或固定尺寸缩放。
图像压缩算法:使用图像压缩算法,如JPEG、PNG等,将原始图像进行压缩,同时设定压缩质量和尺寸,得到缩略图。
生成缩略图的目的是为了在资源有限的情况下能够快速加载和展示图像,节省带宽和提高用户体验。具体应用场景包括网页中的图像展示、相册浏览、图像搜索等。
python
# -*- coding: utf-8 -*-
from PIL import Image
from pylab import *
# 添加中文字体支持
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc", size=14)
figure()
# 显示原图
pil_im = Image.open(r"图片路径")
print(pil_im.mode, pil_im.size, pil_im.format)
subplot(121)
title(u'原图', fontproperties=font)
axis('off')
imshow(pil_im)
# 缩略图
pil_im = Image.open('图片路径')
size = 128, 128
pil_im.thumbnail(size)
print(pil_im.size)
subplot(122)
title(u'缩略图', fontproperties=font)
axis('off')
imshow(pil_im)
show()
拷贝粘贴区域
python
# -*- coding: utf-8 -*-
from PIL import Image
from pylab import *
# 添加中文字体支持
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc", size=14)
figure()
# 显示原图
pil_im = Image.open(r"图片路径")
print(pil_im.mode, pil_im.size, pil_im.format)
subplot(121)
title(u'原图', fontproperties=font)
axis('off')
imshow(pil_im)
#拷贝粘贴区域
pil_im = Image.open('图片路径')
box = (50,50,200,200)
region = pil_im.crop(box)
region = region.transpose(Image.ROTATE_180)
pil_im.paste(region,box)
subplot(122)
title(u'拷贝粘贴区域', fontproperties=font)
axis('off')
imshow(pil_im)
show()
调整图像尺寸
python
# -*- coding: utf-8 -*-
from PIL import Image
from pylab import *
# 添加中文字体支持
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc", size=14)
figure()
# 显示原图
pil_im = Image.open(r"图片路径")
print(pil_im.mode, pil_im.size, pil_im.format)
subplot(121)
title(u'原图', fontproperties=font)
axis('off')
imshow(pil_im)
# 调整图像尺寸
pil_im = Image.open('图片路径')
size = 128, 128
pil_im = pil_im.resize(size)
print (pil_im.size)
subplot(122)
title(u'调整尺寸后的图像', fontproperties=font)
axis('off')
imshow(pil_im)
show()
旋转图像45°
python
# -*- coding: utf-8 -*-
from PIL import Image
from pylab import *
# 添加中文字体支持
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc", size=14)
figure()
# 显示原图
pil_im = Image.open(r"图片路径")
print(pil_im.mode, pil_im.size, pil_im.format)
subplot(121)
title(u'原图', fontproperties=font)
axis('off')
imshow(pil_im)
# 旋转图像45°
pil_im = Image.open('图片路径')
pil_im = pil_im.rotate(45)
subplot(122)
title(u'旋转45°后的图像', fontproperties=font)
axis('off')
imshow(pil_im)
show()
画图线、描点
python
# -*- coding: utf-8 -*-
from PIL import Image
from pylab import *
# 添加中文字体支持
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc", size=14)
im = array(Image.open('D:\\pycharm hgy\\第一个\\计算机视觉\\第一章\\data\\1.jpg'))
figure()
# 画有坐标轴的
subplot(121)
imshow(im)
x = [100, 100, 250, 250]
y = [200, 300, 200, 300]
plot(x, y, 'r*')
plot(x[:2], y[:2])
title(u'绘图: "empire.jpg"', fontproperties=font)
# 不显示坐标轴
subplot(122)
imshow(im)
x = [100, 100, 250, 250]
y = [200, 300, 200, 300]
plot(x, y, 'r*')
plot(x[:2], y[:2])
axis('off') #显示坐标轴
title(u'绘图: "empire.jpg"', fontproperties=font)
show()