首页 > 解决方案 > 如何在python上编写将jpeg转换为png?

问题描述

我需要用 Python 编写脚本,像这样带有选项:

我怎样才能做到这一点?

潜在的解决方案

ffmpeg, imagemagick

标签: pythonimageimagemagick-convert

解决方案


这是在 Python/OpenCV 中执行此操作的一种方法

  • 读取输入
  • 定义要透明的所需颜色(蓝色)
  • 定义容差量 (5%)
  • 根据容差创建颜色的上限和下限
  • 颜色和反转阈值
  • 将阈值结果放入输入的alpha通道
  • 保存结果

输入:

在此处输入图像描述

import cv2
import numpy as np

# load image
img = cv2.imread('barn.jpg')

# specify blue color
color = (230,160,120)
b = color[0]
g = color[1]
r = color[2]

# specify tolerance as percent
tol = 5
tol = 5/100

# make lower and upper bounds as color minus/plus 5%
bl = int((1-tol) * b)
gl = int((1-tol) * g)
rl = int((1-tol) * r)
lower = (bl,gl,rl)
bu = int((1+tol) * b)
gu = int((1+tol) * g)
ru = int((1+tol) * r)
upper = (bu,gu,ru)

# threshold on color and invert
mask = cv2.inRange(img, lower, upper)
mask = 255 - mask

# put mask into alpha channel
result = img.copy()
result = cv2.cvtColor(result, cv2.COLOR_BGR2BGRA)
result[:, :, 3] = mask

# save resulting masked image
cv2.imwrite('barn_transp_blue.png', result)

# display result, though it won't show transparency
cv2.imshow("MASK", mask)
cv2.imshow("RESULT", result)
cv2.waitKey(0)
cv2.destroyAllWindows()

阈值图像:

在此处输入图像描述

透明结果:

在此处输入图像描述


推荐阅读