如何使用Python在OpenCV中合成两个图像?

2023-11-22

我有一张图像保持不变,另一张图像是第一张图像,但应用了滤镜。我想创建第三个图像,它应该是前两个图像的合成。

我知道在MATLAB中有一个函数叫做asimfuse()使用默认颜色通道绿色-洋红色。我想在 Python 中做同样的事情,使用完全相同的颜色通道。我怎样才能做到这一点 ?

以下是图像(第一张是原始图片,第二张是应用了滤镜的第一张图片,第三张是 MATLAB 结果):

image filter result

感谢您的帮助 !


默认情况下,imfuse只是将这对图像叠加在不同的色带中(默认为Method=falsecolor and ColorChannels=green-magenta).

下面是 MATLAB 中的一个示例来说明(用 Python/OpenCV 编写应该很容易):

% a pair of grayscale images
A = imread('cameraman.tif');
B = imrotate(A,5,'bicubic','crop');    % image "A" rotated a bit

% use IMFUSE
C = imfuse(A,B);
imshow(C)

% use our version where: Red=B, Green=A, Blue=B
C = cat(3, B, A, B);
imshow(C)

两者应该给你同样的东西:

fused_images


EDIT:

这是 Python/OpenCV 版本:

import numpy as np
import cv2

A = cv2.imread(r"C:\path\to\a.png", 0)
B = cv2.imread(r"C:\path\to\b.png", 0)

#C = cv2.merge((B,A,B))
C = np.dstack((B,A,B))
cv2.imshow("imfuse",C)
cv2.waitKey(0)

opencv_python_imfuse

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用Python在OpenCV中合成两个图像? 的相关文章

随机推荐