怎么利用python的opencv去除图片的白边
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要讲解了"怎么利用python的opencv去除图片的白边",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么利用python的opencv去
千家信息网最后更新 2026年11月02日怎么利用python的opencv去除图片的白边
这篇文章主要讲解了"怎么利用python的opencv去除图片的白边",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么利用python的opencv去除图片的白边"吧!
本文实例为大家分享了python使用opencv切割图片白边的具体代码,可以横切和竖切,供大家参考,具体内容如下
废话不多说直接上码,分享使人进步:
from PIL import Imagefrom itertools import groupbyimport cv2import datetimeimport os # from core.rabbitmq import MessageQueue THRESHOLD_VALUE = 230 # 二值化时的阈值PRETREATMENT_FILE = 'hq' # 横切时临时保存的文件夹W = 540 # 最小宽度H = 960 # 最小高度 class Pretreatment(object): __doc__ = "图片横向切割" def __init__(self, path, save_path, min_size=960): self.x = 0 self.y = 0 self.img_section = [] self.continuity_position = [] self.path = path self.save_path = save_path self.img_obj = None self.min_size = min_size self.mkdir(self.save_path) self.file_name = self.path.split('/')[-1] def get_continuity_position_new(self): img = cv2.imread(self.path) gray_image = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) ret, thresh2 = cv2.threshold(gray_image, THRESHOLD_VALUE, 255, cv2.THRESH_BINARY) width = img.shape[1] height = img.shape[0] self.x = width self.y = height for i in range(0, height): if thresh2[i].sum() != 255 * width: self.continuity_position.append(i) def filter_rule(self): if self.y < self.min_size: return True def mkdir(self, path): if not os.path.exists(path): os.makedirs(path) def get_section(self): # 获取区间 for k, g in groupby(enumerate(self.continuity_position), lambda x: x[1] - x[0]): l1 = [j for i, j in g] # 连续数字的列表 if len(l1) > 1: self.img_section.append([min(l1), max(l1)]) def split_img(self): print(self.img_section) for k, s in enumerate(self.img_section): if s: if not self.img_obj: self.img_obj = Image.open(self.path) if self.x < W: return if s[1] - s[0] < H: return cropped = self.img_obj.crop((0, s[0], self.x, s[1])) # (left, upper, right, lower) self.mkdir(os.path.join(self.save_path, PRETREATMENT_FILE)) cropped.save(os.path.join(self.save_path, PRETREATMENT_FILE, f"hq_{k}_{self.file_name}")) def remove_raw_data(self): os.remove(self.path) def main(self): # v2 try: self.get_continuity_position_new() self.filter_rule() self.get_section() self.split_img() except Exception as e: print(self.file_name) print(e) finally: if self.img_obj: self.img_obj.close() class Longitudinal(Pretreatment): def get_continuity_position_new(self): print(self.path) img = cv2.imread(self.path) gray_image = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) ret, thresh2 = cv2.threshold(gray_image, THRESHOLD_VALUE, 255, cv2.THRESH_BINARY) width = img.shape[1] height = img.shape[0] print(width, height) self.x = width self.y = height for i in range(0, width): if thresh2[:, i].sum() != 255 * height: self.continuity_position.append(i) def split_img(self): print(self.img_section) for k, s in enumerate(self.img_section): if s: if not self.img_obj: self.img_obj = Image.open(self.path) if self.y < H: return if s[1] - s[0] < W: return cropped = self.img_obj.crop((s[0], 0, s[1], self.y)) # (left, upper, right, lower) cropped.save(os.path.join(self.save_path, f"{k}_{self.file_name}")) def main(path, save_path): starttime = datetime.datetime.now() a = Pretreatment(path=path, save_path=save_path) a.main() for root, dirs, files in os.walk(os.path.join(save_path, PRETREATMENT_FILE)): for i in files: b = Longitudinal(path=os.path.join(save_path, PRETREATMENT_FILE, i), save_path=save_path) b.main() os.remove(os.path.join(save_path, PRETREATMENT_FILE, i)) endtime = datetime.datetime.now() print(f'耗时:{(endtime - starttime)}') if __name__ == '__main__': path = '你图片存放的路径' save_path = '要保存的路径' for _, _, files in os.walk(path): for i in files: main(path=os.path.join(path, i), save_path=save_path) os.rmdir(os.path.join(save_path, PRETREATMENT_FILE))原始图片:
结果:

感谢各位的阅读,以上就是"怎么利用python的opencv去除图片的白边"的内容了,经过本文的学习后,相信大家对怎么利用python的opencv去除图片的白边这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
图片
白边
内容
学习
最小
路径
原始
代码
实例
宽度
就是
废话
思路
情况
文件
文件夹
文章
更多
横向
知识
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技公司起名
互联网科技会
期待互联网科技
华中科技大学互联网
互联网养老 桔豆科技
互联网科技公司招聘
字节跳动和互联网科技
语蝶互联网科技有限公司
移动互联网年度科技创新
中国科技创新与世界互联网大会
工业互联网山东科技大学
雨阳互联网卡科技有限公司
领航科技大厦互联网公司
半导体行业属于互联网高科技类吗
易企秀互联网科技是做什么的
神州科技互联网有限公司
唐山双旺合互联网科技产业园
青岛易易互联网科技
互联网科技创新方面的资料
中国主要互联网科技公司
苏州找大状互联网科技有限公司
中国互联网科技工作委员会毛军
麻工互联网科技
唐信互联网科技
未来的互联网科技
衡水科技产业互联网平台
海南科技产业互联网平台
互联网科技公司需要的职位
佳云科技和互联网广告
允成互联网科技有限公司融资