在 openCV 中使用单应性将 PNG 粘贴到图像上
Pasting a PNG on a image using homography in openCV
我试图通过使用 this example. 在 openCV 中使用单应性将 png 图像粘贴到另一个图像 (jpg) 上并且 jpg 格式适用于此但是当我尝试使用 png 时,白色区域显示。我还尝试在 imread 中使用添加 -1 和 cv2.IMREAD_UNCHANGED
,这不会更改图像,但之后代码不会 运行。请建议我一种粘贴 png 的方法。会有很大的帮助。代码是这样的,接下来是图片。
import cv2
import numpy as np
from utils import mouse_handler
from utils import get_four_points
import sys
if __name__ == '__main__' :
# Read source image.
im_src = cv2.imread('first-image.jpg');
size = im_src.shape
# Create a vector of source points.
pts_src = np.array(
[
[0,0],
[size[1] - 1, 0],
[size[1] - 1, size[0] -1],
[0, size[0] - 1 ]
],dtype=float
);
# Read destination image
im_dst = cv2.imread('times-square.jpg');
# Get four corners of the billboard
print 'Click on four corners of a billboard and then press ENTER'
pts_dst = get_four_points(im_dst)
# Calculate Homography between source and destination points
h, status = cv2.findHomography(pts_src, pts_dst);
# Warp source image
im_temp = cv2.warpPerspective(im_src, h, (im_dst.shape[1],im_dst.shape[0]))
# Black out polygonal area in destination image.
cv2.fillConvexPoly(im_dst, pts_dst.astype(int), 0, 16);
# Add warped source image to destination image.
im_dst = im_dst + im_temp;
# Display image.
cv2.imshow("Image", im_dst);
cv2.waitKey(0);
图像:
https://github.com/spmallick/learnopencv/blob/master/Homography/first-image.jpg
https://github.com/spmallick/learnopencv/blob/master/Homography/times-square.jpg
UTILS CLASS
https://github.com/spmallick/learnopencv/blob/master/Homography/utils.py
如果你能给我一个答案就太好了。
问题已在 this link 中解决。 PNG 格式有一个名为 'alpha' 的额外通道用于透明度。
我试图通过使用 this example. 在 openCV 中使用单应性将 png 图像粘贴到另一个图像 (jpg) 上并且 jpg 格式适用于此但是当我尝试使用 png 时,白色区域显示。我还尝试在 imread 中使用添加 -1 和 cv2.IMREAD_UNCHANGED
,这不会更改图像,但之后代码不会 运行。请建议我一种粘贴 png 的方法。会有很大的帮助。代码是这样的,接下来是图片。
import cv2
import numpy as np
from utils import mouse_handler
from utils import get_four_points
import sys
if __name__ == '__main__' :
# Read source image.
im_src = cv2.imread('first-image.jpg');
size = im_src.shape
# Create a vector of source points.
pts_src = np.array(
[
[0,0],
[size[1] - 1, 0],
[size[1] - 1, size[0] -1],
[0, size[0] - 1 ]
],dtype=float
);
# Read destination image
im_dst = cv2.imread('times-square.jpg');
# Get four corners of the billboard
print 'Click on four corners of a billboard and then press ENTER'
pts_dst = get_four_points(im_dst)
# Calculate Homography between source and destination points
h, status = cv2.findHomography(pts_src, pts_dst);
# Warp source image
im_temp = cv2.warpPerspective(im_src, h, (im_dst.shape[1],im_dst.shape[0]))
# Black out polygonal area in destination image.
cv2.fillConvexPoly(im_dst, pts_dst.astype(int), 0, 16);
# Add warped source image to destination image.
im_dst = im_dst + im_temp;
# Display image.
cv2.imshow("Image", im_dst);
cv2.waitKey(0);
图像: https://github.com/spmallick/learnopencv/blob/master/Homography/first-image.jpg https://github.com/spmallick/learnopencv/blob/master/Homography/times-square.jpg
UTILS CLASS https://github.com/spmallick/learnopencv/blob/master/Homography/utils.py
如果你能给我一个答案就太好了。
问题已在 this link 中解决。 PNG 格式有一个名为 'alpha' 的额外通道用于透明度。