我有一个图像保持不变,另一个图像是第一个图像,但应用了滤镜。我想创建第三张图片,它应该是前两张图片的合成图。
我知道在 MATLAB 中有一个名为 imfuse()
的函数,其默认颜色 channel 为绿色-品红色。我想在 Python 中做同样的事情,使用完全相同的颜色 channel 。我该怎么做?
这是图像(第一张是原始图片,第二张是第一张应用了滤镜的图片,第三张是 MATLAB 结果):
感谢您的帮助!
最佳答案
默认情况下,imfuse
简单地覆盖不同色带中的一对图像(默认为 Method=falsecolor
和 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)
两者应该给你同样的东西:
编辑:
这是 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)
关于python - 如何使用 Python 在 OpenCV 中合成两个图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24725310/