python - 如何在python上编写将jpeg转换为png?
解决方案
这是在 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()
阈值图像:
透明结果:
推荐阅读
- css - 如何组合多个 CSS 媒体查询“组”?
- c# - 对象未正确移向其他对象位置 - Vector3.MoveTowards
- c# - 注册依赖的正确方法是什么?-》使用IsRegistered()检查服务注册,或者使用ResolveOptional()方法
- bash - 如何在容器启动时启动自定义脚本和 cron
- r - ggplot线段从一个点到来自不同数据帧的多个
- ios - 路由到其他屏幕时,在 IOS 上的语音选择会持续一段时间
- reactjs - 尝试从 API 呈现数据时,githubData.map 不是函数
- mysql - 如何使用两个不同的表基于单列更新多行
- substrate - 使用运行时模块结构与其他结构和枚举一起导入的正确 JSON 类型定义
- java - 改造调用具有相同的名称不同的数据类型