【问题标题】:question about python and opencv for merge images关于合并图像的python和opencv的问题
【发布时间】:2021-10-09 07:54:12
【问题描述】:

我用 python 和 opencv 编写了这段代码 我有 2 张图片(第一张是来自足球比赛 36.jpg 的图片):

36.jpg

和(第二个是 pitch.png 图像(足球场线条(红色)),png 格式 = 没有白色背景):

pitch.png

使用此代码,我在 2 个图像中选择了 4 个坐标点(右侧罚球区的 4 个角) 然后使用(cv2.warpPerspective)并显示它,我们可以显示来自(顶视图)的第一张图像 如下:

top view

我的问题是: 我的代码中需要哪些更改(第二张图像的红色线条)显示在第一张图像上,与下面的图像相同(我在绘画应用程序中绘制):

desired

提前感谢您的帮助

这是我的代码:

import cv2
import numpy as np

if __name__ == '__main__' :

 # Read source image.
 im_src = cv2.imread('c:/36.jpg')
 # Four corners of penalty area in first image
 pts_src = np.array([[314, 108], [693, 108], [903, 493],[311, 490]])

 # Read destination image.
 im_dst = cv2.imread('c:pitch.png')
 # Four corners of right penalty area in pitch image.
 pts_dst = np.array([[480, 76],[569, 76],[569, 292],[480, 292]])

 # Calculate Homography
 h, status = cv2.findHomography(pts_src, pts_dst)

 # Warp source image to destination based on homography
 im_out = cv2.warpPerspective(im_src, h, (im_dst.shape[1],im_dst.shape[0]))

 # Display images
 cv2.imshow("Source Image", im_src)
 cv2.imshow("Destination Image", im_dst)
 cv2.imshow("Warped Source Image", im_out)

 cv2.waitKey(0)

【问题讨论】:

标签: python opencv image-processing


【解决方案1】:

交换您的源和目标图像和点。然后,扭曲源图像:

im_out = cv2.warpPerspective(im_src, h, (im_dst.shape[1],im_dst.shape[0]), borderValue=[255,255,255])

并添加此代码

mask = im_out[:,:,0] < 100

im_out_overlapped = im_dst.copy()
im_out_overlapped[mask] = [0,0,255]

【讨论】:

  • 谢谢你,你的解决方案已经完成了,有没有一种方法不需要写4个角的坐标?它会自动找到
  • 这是一个完全不同的问题,您在使用其他帐户之前问过这个问题,然后删除了(您不应该这样做)
  • @user8190410 您不需要将参数交换为findHomography。您只需要将单应性反转为warpPerspective(使用WARP_INVERSE_MAP 作为标志)
  • 和“添加这个”在哪里?同样在您的变量中 im_out_overlapped 未使用或未明确使用。你能完成未来访问的答案吗?
猜你喜欢
  • 2021-10-15
  • 2021-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-01
  • 1970-01-01
  • 2019-11-09
  • 1970-01-01
相关资源
最近更新 更多