Python计算机视觉编程 - 第三章 图像映射 -图像嵌入

本节课我们学习了如何将一张图片通过点坐标定位的形式嵌入到另一张图片之中,全程使用python3.7编译环境。
首先我们要了解仿射扭曲,举一个简单的例子,就是将图像或者图像的一部分放置在另一幅图像中,使得它们能够和制定的区域或者标志物对齐。
我们将函数image_in_image()添加到warp.py文件中。该函数的输入参数为两幅图像和一个坐标,该坐标为将第一幅图像放置到第二幅图像中的角点坐标。代码如下:

 # -*- coding: utf-8 -*-
from PCV.geometry import warp, homography
from PIL import  Image
from pylab import *
from scipy import ndimage

im1 = array(Image.open('123.jpg').convert('L'))
im2 = array(Image.open('321.jpg').convert('L'))
# set to points
tp = array([[250,1700,1700,250],[250,250,1200,1200],[1,1,1,1]])
#tp = array([[675,826,826,677],[55,52,281,277],[1,1,1,1]])
im3 = warp.image_in_image(im1,im2,tp)
figure()
gray()
subplot(141)
axis('off')
imshow(im1)
subplot(142)
axis('off')
imshow(im2)
subplot(143)
axis('off')
imshow(im3)
show()

正如代码所示,这段代码没有很多繁杂的操作,就是将第一幅图画嵌入到第二幅图画之中。我们寻找了集美大学标志的“红色艺术人体形象”,将他的图片嵌入到一张仅有墙壁的图像中,原图如下:
在这里插入图片描述
在这里插入图片描述
经过代码处理之后可得以下结果:
在这里插入图片描述
在本节课处理代码时我还遇到了以下的错误:from PCV.geometry import warp, homography。
这是PCV下面的warp.py里面的matplotlib.delaunay不再被使用了,所以把它换成一个相同功能的就可以,可以把import matplotlib.delaunay as md 换成from scipy.spatial import Delaunay,warp.py里面的centers,edges,tri,neighbors = md.delaunay(x,y)换成tri= Delaunay(np.c_[x,y]).simplices,就可以运行了,其他example也类似。
以上就是本节课所学的知识。

猜你喜欢

转载自blog.csdn.net/qq_39407482/article/details/88676469