本例子为通过仿射扭曲变换将图像放置到另一幅图像中,使得它们能够和指定的区域或者标记物对齐。
运行的代码如下:
# test.py
from PCV.geometry import warp, homography
from PIL import Image
from pylab import *
from scipy import ndimage
#放射扭曲im1到im2
#打开两张图片
im1 = array(Image.open('D:\pythonxy\image/wen.jpg').convert('L'))
im2 = array(Image.open('D:\pythonxy\image/yu.jpg').convert('L'))
#设置映射的目标点
tp = array([[240,375,375,240],[143,145,275,275],[1,1,1,1]])
#使用仿射变换将im1放置在im2上,使im1图像的角和tp尽可能的靠近
im3 = warp.image_in_image(im1,im2,tp)
#将图像灰度显示
figure()
gray()
subplot(131)
axis('off')
imshow(im1)
subplot(132)
axis('off')
imshow(im2)
subplot(133)
axis('off')
imshow(im3)
#选定im1角上的一些点
m,n = im1.shape[:2]
fp = array([[0,m,m,0],[0,0,n,n],[1,1,1,1]])
# 第一个三角形
tp2 = tp[:,:3]
fp2 = fp[:,:3]
# 计算仿射变换H,并且将其应用于图像im1
H = homography.Haffine_from_points(tp2,fp2)
#affine仿射变换的