以下是使用 OpenCV2 移除图像四周白色边框并裁剪剩余部分的代码示例:

import cv2

# 读取图片
img = cv2.imread('image.jpg')

# 将图像转换为灰度图
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 计算图像边框
_, thresh = cv2.threshold(gray, 240, 255, cv2.THRESH_BINARY)
contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
x, y, w, h = cv2.boundingRect(contours[0])

# 裁剪图像
crop = img[y:y+h, x:x+w]

# 保存剩余部分的图片
cv2.imwrite('cropped_image.jpg', crop)

在这个代码中,我们首先读取一张图片,并将其转换为灰度图。然后使用阈值化操作找到了图像的边框,并计算出了边框的位置和大小。最后,我们使用 numpy 的切片操作对图像进行裁剪,并将剩余的部分保存成一张新的图片。

代码解释:

  • cv2.imread():读取图片文件。
  • cv2.cvtColor():将图片转换为灰度图。
  • cv2.threshold():将灰度图像进行阈值化,将像素值大于阈值的设置为白色,小于阈值的设置为黑色,从而找到图像边框。
  • cv2.findContours():查找图像中的轮廓,cv2.RETR_EXTERNAL 表示只查找外部轮廓,cv2.CHAIN_APPROX_SIMPLE 表示压缩轮廓,只保留轮廓的起点和终点。
  • cv2.boundingRect():计算轮廓的外接矩形,返回矩形的左上角坐标 (x, y)、宽度 w 和高度 h。
  • img[y:y+h, x:x+w]:使用 numpy 的切片操作裁剪图像,y:y+h 表示从 y 行开始到 y+h 行结束,x:x+w 表示从 x 列开始到 x+w 列结束。
  • cv2.imwrite():保存裁剪后的图片。

注意:

  • 该代码示例假设图像四周的白色边框是连续的,且像素值大于 240。
  • 可以根据实际情况调整阈值和裁剪参数。
OpenCV2 移除图像白色边框并裁剪 - 代码示例

原文地址: https://www.cveoy.top/t/topic/oWTB 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录