如何使用Python在OpenCV中创建两个图像的组合?

时间:2014-07-13 17:23:47

标签: python matlab opencv image-processing

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

我知道在MATLAB中有一个名为imfuse()的函数,其默认颜色通道为green-magenta。我想在Python中做同样的事情,使用完全相同的颜色通道。我怎么能这样做?

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

image http://i59.tinypic.com/2q1usqs.jpg filter http://i59.tinypic.com/35iq612.jpg result http://i62.tinypic.com/21c9vmf.jpg

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

默认情况下,imfuse只会覆盖不同颜色的图像对(默认为Method=falsecolorColorChannels=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


编辑:

这是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