如何创建一个以一定角度显示一堆图像的图形?

塞缪尔

我正在尝试创建与相似的人物这个

我试图在OpenCV中使用透视变换或在skimage中使用图像变换。

import matplotlib.pyplot
from skimage import transform

# Load the image as a matrix
image = io.imread("/path/to/your/image.jpg")

# Create affine transform
afine_tf = skimage.transform.AffineTransform(shear=0.2)

# Apply transform to image data
modified = skimage.transform.warp(image, inverse_map=afine_tf)

不幸的是,我无法用透视图达到预期的效果。

斯蒂芬·梅施克

您可以使用透视变换:

输出

您将必须更改此脚本,以便它使用您的图像而不是生成纯色图像:

import cv2
import numpy as np

# Generate some images
images = []
w, h = 600,700
# Corners of images to be pasted onto background
pts2 = np.float32([[0,0],[w,0],[0,w],[w,w]])
for i in range(5):
    img = np.zeros((w,w,3), np.uint8)
    img[:,:,:] = i*42, 255, 255
    img = cv2.cvtColor(img, cv2.COLOR_HSV2BGR)
    images.append(img)

# Create a background
bg = np.zeros((w,h,3), np.uint8)

# Define where to paste the images
top, bottom, dx, width, middle, left_buffer = 100, 500, 100, 200, 300, 50
# Create a mask
mask = np.zeros((w,w), np.uint8)
mask[:] = 255
bg_zeros = np.zeros_like(bg)

# Paste the images onto the background
for i in range(5):
    # Get the image
    img = images[i]
    # Compute where to paste the image
    left = left_buffer+dx*i
    right = left_buffer+dx*i + width
    mid = int((left + right)/2)
    pts1 = np.float32([[mid, top], [right, middle],
                       [left, middle], [mid, bottom]])
    # Warp the image
    M = cv2.getPerspectiveTransform(pts2,pts1)
    dst = cv2.warpPerspective(img,M,(h,w))
    # Warp the mask and mask out the background
    cmask = cv2.warpPerspective(mask, M, (h,w))
    bg = cv2.bitwise_and(bg,bg,mask = 255-cmask)
    # Add the image to the background
    bg += dst
cv2.imshow('bg', bg)
cv2.waitKey()
cv2.destroyAllWindows()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何快速创建一堆图像以覆盖两个图像?

如何创建一个像模板一样的函数,它将一堆代码作为参数?

如何动态地创建一个具有一定类别的角度的div?

在Excel的图像ActiveX中显示一堆图像

在C#中从一堆ICollection <Implementation>创建一个IEnumerable <Interface>

从一堆JPEG构造一个MJPEG

如何使用计时器以一定间隔从NotifyIcon创建一个显示气球提示的UserControl?

jQuery-试图隐藏和显示一堆图像

如何运行一堆分层的虚拟外壳程序进程(另一个进程等)?

如何传递可能是一堆相似对象中的任何一个的参数?

不用键入一堆“或”语句,如何在此代码中实现一个函数?

球拍编程:如何使一堆字符变成一个列表?

如何用该列表的第一个URL替换一堆URL

如何从一堆计算值中一个接一个地分配Vue对象的属性?

如何使JQuery的droppable元素接受一堆中的一个和仅一个可拖动元素?

旋转图像一定角度

如何设计一堆“提升”按钮和抖动图像

将一堆图像居中

如何在Powershell的循环内创建一堆数组

如何遍历一个函数一定次数?

从一堆JPEG创建视频

经过一些处理后,for循环可以显示和写入一堆图像

创建一个显示图形的 .exe 文件

使用哪个软件将一堆照片和电影文件一个接一个地显示为幻灯片?

如何将一堆同名文件复制到一个文件夹?

如何通过 Python 在一个字符串中打开一堆 .txt 文件

如何抓取一堆 scss 文件并为所有应用程序制作一个 css 文件

如何将每行X行从一堆文件复制到另一个文件?

如何对一堆<path>进行分组