【问题标题】:How to write PILcode with opencv如何用opencv编写PILcode
【发布时间】:2020-03-20 19:46:00
【问题描述】:
from PIL import Image, ImageDraw, ImageFilter

im_rgb = Image.open('x.JPG')
im_a = Image.open('blackandwhitex.png').convert('L').resize(im_rgb.size)

im_rgba = im_rgb.copy()
im_rgba.putalpha(im_a)
im_rgba.save('xtransparent.png')

多亏了这段代码,我在 blacka 上透明并在上面放了另一张照片,所以最后我有了透明的背景。

它在 opencv 中的样子。我需要打开简历,因为 PIL 旋转照片。但是对于 opencv 和 google colab 的新人来说,这很难写。

我已使用此代码制作了透明黑色:

import cv2
file_name = "x.png"

src = cv2.imread(file_name, 1)
tmp = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)
_,alpha = cv2.threshold(tmp,0,255,cv2.THRESH_BINARY)
b, g, r = cv2.split(src)
rgba = [b,g,r, alpha]
dst = cv2.merge(rgba,4)
cv2.imwrite("newx.png", dst)

不太好……

将第二张和第三张照片放在一起后,我想要这个:

这是使用 PIL 的输入。 (所有图像的大小相同。)

【问题讨论】:

  • 请提供 (a) 所有原始输入图像(可能会缩小尺寸,如果它们真的有点 [4000 x 5000]),以便复制是可能的,以及 (b) 您的 PIL 保存的实际输出,以便可以进行比较。您的实际问题是什么?您的 OpenCV 版本中是否有太多“黑色”? (然后,调整阈值!?)
  • 图片大小还可以,我不能以原始尺寸上传它们,因为它们很重。问题是 imshow() 之后的照片在使用 PIL 时被翻转。将 imshow 参数原点更改为“降低”没有任何帮助。所以我想我必须在opencv中编写代码。我需要一些技巧,如何在 opencv 或使用 PIL 中编写它。最后一张照片是我使用 PIL 的输出(错误)并旋转了之前的照片。

标签: python python-3.x opencv python-imaging-library google-colaboratory


【解决方案1】:

显示彩色照片:

%pylab inline
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
img2=mpimg.imread('colorphoto.JPG')
imgplot = plt.imshow(img2)
plt.show()

之后有些照片会翻转。

显示黑白照片:

%pylab inline
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
img2=mpimg.imread('bawphoto.png')
imgplot = plt.imshow(img2)
plt.show()

对于一些我需要用到的照片:

from PIL import Image
def rotate(image_path, saved_location):

    image_obj = Image.open(image_path)
    transposed  = image_obj.transpose(Image.ROTATE_90)
    transposed  = transposed.transpose(Image.ROTATE_180)
    transposed.save(saved_location)
    transposed.show()

if __name__ == '__main__':

    image = 'colorphoto.JPG'

    rotate(image, 'rotated_colorphoto.JPG')

然后我将它们转换成一张照片:

from PIL import Image, ImageDraw, ImageFilter

im_rgb = Image.open('rotated_colorphoto.JPG')
im_a = Image.open('bawphoto.png').convert('L').resize(im_rgb.size)
im_rgba = im_rgb.copy()
im_rgba.putalpha(im_a)
im_rgba.save('imagewithtransparentbackground.png')

我不想要翻转的照片。我需要它们的原始尺寸不翻转..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-19
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-12
    • 2023-01-05
    • 1970-01-01
    相关资源
    最近更新 更多