去除图像黑边

去除图像黑边的操作其实蛮简单的,主要是定位黑边的长度和宽度。

我是在网上搜一个人的代码搜到的,其实有些地方没有理解,也觉得可以更简单,先占坑,后面再改。

给大家放个完整代码。我放的是对一张图片进行处理。后面看看,改一下再放一个对文件夹里所有图片进行处理的。

import cv2
import os

source_path="D:\\DATASET\\gan_picture\\emily\\step1\\6500.jpg"

image = cv2.imread(source_path)  

b=cv2.threshold(image,15,255,cv2.THRESH_BINARY)          #调整裁剪效果
binary_image=b[1]               #二值图--具有三通道
binary_image=cv2.cvtColor(binary_image,cv2.COLOR_BGR2GRAY)
#cv2.imwrite("D:\\emily_6500.jpg", binary_image)
#print(binary_image.shape)       #改为单通道

row=binary_image.shape[0]    #row指行,第几行,也就是height
#print("高度x=",x)   
column=binary_image.shape[1]   #column指列,第几列,也就是width
#print("宽度y=",y)
edges_row=[]
edges_column=[]

for i in range(row):              #逐个判断
    for j in range(column):

        if binary_image[i][j]==255:     #255表示白色
         # print("横坐标",i)
         # print("纵坐标",j)
         edges_row.append(i)
         edges_column.append(j)
#print(edges_x)
#print(edges_y)
bottom=min(edges_row)   #底部
#print(bottom)
top=max(edges_row)     #顶部
#print(top)

left=min(edges_column)
#print(left)         #左边界
right=max(edges_column)
#print(right)                #右边界

pre2_picture=image[bottom:top,left:right]
cv2.imwrite("D:\\emily_65004.jpg", pre2_picture)

这段代码的意思呢,是先找到黑边的像素位置,然后直接重置图片,只要没有黑边的像素部分。

其中有一个点。像素点是从屏幕左上角开始,所以,上面是bottom,下面是top,开始是left,结束是right。

如果觉得有用的话,给我点赞留言吧~

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值