帮我写一个opencv图像去黑边的Python程序
时间: 2023-11-29 17:06:48 浏览: 44
可以尝试以下代码:
```python
import cv2
# 读取图片
img = cv2.imread("your_image_path.jpg")
# 将图片转换为灰度图
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 使用 Canny 边缘检测算法
edged = cv2.Canny(gray, 30, 200)
# 查找轮廓
contours, hierarchy = cv2.findContours(edged, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
# 获取最大轮廓
max_contour = max(contours, key=cv2.contourArea)
# 获取图片宽度和高度
height, width = img.shape[:2]
# 计算最大轮廓的边界矩形
x, y, w, h = cv2.boundingRect(max_contour)
# 计算上下左右的黑边大小
top = y
bottom = height - y - h
left = x
right = width - x - w
# 扩展图片边框,去除黑边
border_size = max(top, bottom, left, right)
img_border = cv2.copyMakeBorder(img, border_size, border_size, border_size, border_size, cv2.BORDER_CONSTANT, value=[255, 255, 255])
# 保存图片
cv2.imwrite("borderless_image.jpg", img_border)
```
上述代码使用了 Canny 边缘检测算法来查找图片轮廓,并计算出最大轮廓的边界矩形和黑边大小。然后使用 `copyMakeBorder` 函数将图片边框扩展,去除黑边,并保存处理后的图片。你只需要将 `your_image_path.jpg` 替换为你要处理的图片路径即可。