python - 如何在 python 中裁剪 PNG 图像?
问题描述
我已经成功地从面部图像中提取了皮肤贴片。然而; 对于我的任务,我不需要底部的眼睛和睫毛部分。有没有办法从顶部以一个小角度裁剪以下 png 图像?生成的图像应为 PNG 格式。我想将以下原始图像裁剪为所需的图像:
解决方案
只要您有要在其上方裁剪的线条的颜色值,就可以执行以下操作:
import cv2
import numpy as np
img = cv2.imread("image.png")
for i, j in zip(*np.where(np.all(img == [0, 0, 253], 2))):
img[:i, j] = 0
cv2.imshow("Image", img)
cv2.waitKey(0)
输出:
解释:
- 导入必要的库:
import cv2
import numpy as np
- 读入图片:
img = cv2.imread("image.png")
- 循环遍历图像的索引,其中索引处像素的 BGR 值是线条颜色的 BGR 值:
for i, j in zip(*np.where(np.all(img == [0, 0, 253], 2))):
- 将内部索引处外部索引之前的所有像素设置为黑色。如果您要对其进行可视化,它将是一条一条地绘制黑色垂直线:
img[:i, j] = 0
- 显示生成的图像:
cv2.imshow("Image", img)
cv2.waitKey(0)
推荐阅读
- python-3.x - 模块“seaborn”没有属性“distplot”
- spring-batch - 我需要一些建议来开发一个 spring 批处理应用程序
- php - 删除重复记录而不使用 DISTINCT 和 GROUP BY 关键字
- excel - 动态更改工作表更改事件代码
- c# - 使用 DependentUpon 时可以覆盖资源名称吗?
- jquery - jQuery Select2 排序数字
- angular - 自版本 8 起,Nx 工作区 CLI 不允许创建纯 typescript 库
- java - EditText 框看起来不同 onFocus 事件
- cross-compiling - 如何知道我在 YOCTO 上使用的是什么版本的交叉编译器?
- excel - 在Vba中将范围设置为列的末尾?