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

标签 python matlab opencv image-processing

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

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

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

image filter result

感谢您的帮助!

最佳答案

默认情况下,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

关于python - 如何使用 Python 在 OpenCV 中合成两个图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24725310/

相关文章:

python - Keras的evaluate_generator准确率和scikit learn的accuracy_score不一致

python - 附加列表但错误 'NoneType' 对象没有属性 'append'

python - Vpython 中的 Matlab 冒号运算符等效项

c - CV_SWAP宏有什么作用?

C++将png转换为base64

android - 尝试使用 opencv 从图像中检测蓝色,并得到意想不到的结果

python - c++运行python代码以导入自定义模块

python - hist2d 中的 vmin 和 vmax

Matlab fopen 命令响应字符串,但不响应等于同一字符串的变量

matlab - 如何从变量中手动输出发布内容