python - 如何在同一图像的不同部分使用 warpperspective?
解决方案
使用 600x600 像素的图像homograpy-test.jpg
:
import cv2
import numpy as np
#load image
img = cv2.imread('homography-test.jpg', cv2.IMREAD_COLOR)
#corners of book covers (before)
frontCoverPtsBefore = np.array([[32, 48], [279, 136], [247, 430], [39, 281]], dtype="float32")
backCoverPtsBefore = np.array([[279, 136], [474, 36], [463, 316], [247, 430]], dtype="float32")
#corners of book covers (after)
frontCoverPtsAfter = np.array([[0, 0], [299, 0], [299, 599], [0, 599]], dtype="float32")
backCoverPtsAfter = np.array([[300, 0], [599, 0], [599, 599], [300, 599]], dtype="float32")
#get the transformation matrices for both covers
M_front = cv2.getPerspectiveTransform(frontCoverPtsBefore, frontCoverPtsAfter)
M_back = cv2.getPerspectiveTransform(backCoverPtsBefore, backCoverPtsAfter)
#warpPerspective both images
img_front = cv2.warpPerspective(img, M_front, (600, 600))
img_back = cv2.warpPerspective(img, M_back, (600, 600))
#copy half of the warped back cover into the warped front cover
np.copyto(img_front[:, 300:, :], img_back[:, 300:, :])
#display before and after
cv2.imshow('img', img)
cv2.imshow('img_front', img_front)
cv2.waitKey(0)
cv2.destroyAllWindows()
推荐阅读
- r - R:使用具有多个数据框的 ggplot2 显示图例
- python - 在大型数据集上使用 scipy.kstest 时获得 0 的 p 值?
- python-2.7 - ROS python从订阅者回调中设置全局变量
- python - 热键忽略了 Linux 上的 Python libvlc 绑定
- javascript - 对象未渲染
- javascript - 无法在 Phaser 3 游戏中加载精灵
- javascript - 在 Jasmine 规格的分解对象中使用随机值的最佳方法是什么?
- flutter - 从远程获取 SQLite 并在 Flutter 中本地存储
- python - subprocess.Popen 使用 docker -c 命令
- python - 熊猫 df 长到宽和枢轴?