python-3.x - Pillow 等效于以下 openCV 代码

标签 python-3.x opencv python-imaging-library

我正在尝试将以下用 openCV 编写的代码模块转换为枕头,但我不知道该怎么做?
j 是一个 rgb 图像

img = cv2.imread(j,1)
b,g,r = cv2.split(img)
green = 2*g-r-b

在这里,我正在读取彩色图像,然后拆分为 channel ,然后在绿色 channel 上执行转换,然后进一步使用绿色 channel 进行进一步操作,但我无法计算出与上述代码等效的枕头。
我试过这个问题Python PIL image split to RGB但我无法获得 2*g-r-b 的结果

最佳答案

你可以像这样使用 PIL 和 Numpy 来做到这一点——我倾向于使用 Numpy,因为它更快、更灵活:

#!/usr/bin/env python3

import numpy as np
from PIL import Image

# Open input image and ensure it is RGB
im = Image.open('start.png').convert('RGB')

# Make into Numpy array
imnp = np.array(im)

# Split into 3 constituent bands
r = imnp[:, :, 0]
g = imnp[:, :, 1]
b = imnp[:, :, 2]

# Process
g = 2*g - r - b

# Recombine to single image and save
merged = np.dstack((r, g, b))
Image.fromarray(merged).save('result.png')

或者您可以不那么明确地拆分并在整个图像上就地执行:
#!/usr/bin/env python3

import numpy as np
from PIL import Image

# Open input image and ensure it is RGB
im = Image.open('start.png').convert('RGB')

# Make into Numpy array
imnp = np.array(im)

# Process
imnp[:,:,1] = 2*imnp[:,:,1] - imnp[:,:,0] - imnp[:,:,2]

# Save
Image.fromarray(imnp).save('result2.png')

关键词 : Python, Numpy, PIL, Pillow, 颜色矩阵, 颜色矩阵, 变换, 乘 channel , 比例 channel , 分离, 单独, 个别 channel , 波段, 组件, 个别, 图像, 图像处理。

关于python-3.x - Pillow 等效于以下 openCV 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54362314/

相关文章:

excel - 使用python对excel中的行进行分组

python-3.x - 断言错误 : Some objects had attributes which were not restored

python - 我有一个保存有用户名和高分的外部文件,我需要订购它们

Python - 如何在 Windows 10 上完全卸载 Anaconda?

c - 金字塔分割 OpenCV

ocr - 有没有办法用小字体改进tesseract OCR?

python - 使用 PyCapture2 和 OpenCV 从 Point Grey 相机获取图像

javascript - 是否可以在 Javascript 中使用 OpenCV 或类似的库?

python-3.x - 如何根据另一个引用点调整图像大小

ubuntu - Django 说所有图像无效,但 PIL 有效