You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用OpenCV和Python去除图片空白并裁剪至仅保留彩色鱼区域

去除图片空白区域并裁剪至彩色鱼的方法

对于新手来说,**Pillow(PIL的分支)**是最易用的图像处理库,操作简单且代码量少;如果后续想深入学习图像处理,也可以试试OpenCV的简化用法,下面分别介绍两种方法:

方法一:用Pillow快速裁剪(推荐新手)

  1. 先安装Pillow:
pip install pillow
  1. 直接运行以下代码,替换成你的图片路径即可:
from PIL import Image

# 打开目标图片
img = Image.open("wpIKP.jpg")

# 转成灰度图,方便识别空白区域(空白为纯白色,灰度值255)
gray_img = img.convert("L")

# 自动获取非空白区域的最小包围框,返回(left, top, right, bottom)四个坐标
bbox = gray_img.getbbox()

# 根据边界框裁剪图片
cropped_img = img.crop(bbox)

# 保存裁剪后的图片
cropped_img.save("cropped_fish.jpg")

# 直接查看裁剪结果(可选)
cropped_img.show()

getbbox()会自动识别所有非纯白区域的范围,一步就能得到只包含彩色鱼的裁剪区域,完全不用手动调参数,对新手非常友好。

方法二:用OpenCV裁剪(适合进阶学习)

如果之后想接触更多图像处理功能,OpenCV是个不错的选择,代码逻辑也很清晰:

  1. 安装依赖:
pip install opencv-python numpy
  1. 示例代码:
import cv2
import numpy as np

# 读取图片
img = cv2.imread("wpIKP.jpg")
# 转灰度图
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 标记出非空白的区域(空白是纯白色,所以取灰度值小于255的部分)
non_white_mask = gray < 255
# 获取非空白区域的上下左右边界坐标
y_coords, x_coords = np.where(non_white_mask)
top, bottom = y_coords.min(), y_coords.max()
left, right = x_coords.min(), x_coords.max()
# 裁剪图片(注意OpenCV的坐标顺序是[y_start:y_end, x_start:x_end])
cropped_img = img[top:bottom+1, left:right+1]

# 保存结果
cv2.imwrite("cropped_fish_cv2.jpg", cropped_img)
# 显示结果(按任意键关闭窗口)
cv2.imshow("裁剪后的鱼", cropped_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

内容的提问来源于stack exchange,提问作者sandeep4o1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 17:42:13