python - OpenCV 中的 PIL ImageChops.screen

标签 python opencv image-processing python-imaging-library

如何在 OpenCV 中从 PIL 编写相同的代码

img3 = ImageChops.screen(im1, im2)

最佳答案

您可以使用 ImageChops.screen 使用的公式来实现它:

out = MAX - ((MAX - image1) * (MAX - image2) / MAX) (source)

代码:

import cv2
import numpy as np

im1 = cv2.imread('im1.png').astype(np.uint16)
im2 = cv2.imread('im2.png').astype(np.uint16)

im3 = (255 - ((255 - im1) * (255 - im2) / 255)).astype(np.uint8)

cv2.imwrite('im3.png', im3)

晋升到uint16 s 是必需的,因为两个 uint18 相乘值,最后我将其重新转换为 uint8 s 因为值保证为 < 256再次。

关于python - OpenCV 中的 PIL ImageChops.screen,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48905676/

相关文章:

python - 在 tensorflow 中连接 vgg19 的问题

python - 如何更改现有轴的 matplotlib 子图投影?

java - OpenCV Mat 到 JavaCV Mat 转换

algorithm - 如何在 "Fast Approximated SIFT"中旋转方向?

python - 如何在 Arch Linux 中安装 Python 3.8 和 Python 3.9?

python - Python中的2D卷积类似于Matlab的conv2

python - 使用OpenCV检测两个接近相似的视频

matlab - imregionalmax matlab 函数在 opencv 中的等价物

python - 仅使用一张深度图像的 OpenCV 视差图后过滤

python - 使用 PIL 复制三角形图像区域