首页 > 解决方案 > 如何在 python 中裁剪 PNG 图像?

问题描述

我已经成功地从面部图像中提取了皮肤贴片。然而; 对于我的任务,我不需要底部的眼睛和睫毛部分。有没有办法从顶部以一个小角度裁剪以下 png 图像?生成的图像应为 PNG 格式。我想将以下原始图像裁剪为所需的图像:

原始图像

所需图像

标签: pythonimageopencvimage-processingcrop

解决方案


只要您有要在其上方裁剪的线条的颜色值,就可以执行以下操作:

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)

输出:

在此处输入图像描述

解释:

  1. 导入必要的库:
import cv2
import numpy as np
  1. 读入图片:
img = cv2.imread("image.png")
  1. 循环遍历图像的索引,其中索引处像素的 BGR 值是线条颜色的 BGR 值:
for i, j in zip(*np.where(np.all(img == [0, 0, 253], 2))):
  1. 将内部索引处外部索引之前的所有像素设置为黑色。如果您要对其进行可视化,它将是一条一条地绘制黑色垂直线:
    img[:i, j] = 0
  1. 显示生成的图像:
cv2.imshow("Image", img)
cv2.waitKey(0)

推荐阅读