共计 623 个字符,预计需要花费 2 分钟才能阅读完成。
前言
最近有项目需要用到图像识别,然后就基于 Python 开发,同时使用了 Opencv/PIL/numpy 等图像算法以及识别库,但是在识别的图像中,可能由于人为的原因,摄像的尺度不是那么准确,但对于标记点来说整个图像识别的计算就可能要偏斜,后来就想到了可以通过图像回转将图片回正,然后再进行识别计算。
正文
在使用 PIL 里面的 Image.rotate()
进行图片回转后,回转的非图片区域就是黑色的,但是这个样子就和我个人的图像标识点产生冲突了,所以我们需要将非图片区域的黑色变成白色:
大概思路就是创建一个新的白色图层,然后将新图层与回转图层进行图像的一个复合,生成一个新的图像即可,以下为主要实现代码:
# 读取图片
pilim = Image.open('./res/use.jpg')
# 转换为有 alpha 层
im2 = pilim.convert('RGBA')
# 旋转
rot = im2.rotate(-18.0, expand=1)
# 创建一个与旋转图像大小相同的白色图像
fff = Image.new('RGBA', rot.size, (255,)*4)
# 使用 alpha 层的 rot 作为掩码创建一个复合图像
out = Image.composite(rot, fff, rot)
# 保存
out.convert(pilim.mode).save('./res/out.jpg')
后记
在图像算法识别中,要运用到大量的数学知识,所以博主先不给你们说了,我去补习一下初中数学先 ….
正文完
使用官方微信小程序体验更多功能