小工具:基于颜色的视频和图片切割

本文介绍了一款用于自动判断并裁剪视频或图片边框颜色的小工具,能有效提高下游模型处理效率。通过将RGB值转换为HSV空间并映射到预定义颜色表来识别背景色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 前言

最近做一个短视频相关的项目的时候,发现输入的视频有很多是有黑边的,有些可能是白边或者其他颜色的边。这对下游的模型处理有很大的影响。于是就写了一个自动判断填充边的颜色,并根据该颜色自动切割视频或者图片的小工具。这个真的挺方便的,所以就分享出来。

代码可见https://github.com/zjuPeco/color_base_image_crop

2 方案简述

所有的颜色都是将rgb值映射到hsv空间后,再映射到事先总结好的一个颜色表当中。每个hsv对应颜色表中的一个名字。

针对视频的切割:
(1)读取视频的第一帧。
(3)如果没有指定背景色,根据图片的四个角的block,取众数推断背景色。block_size可设置。
(3)获取全图中每个像素点对应的颜色名称,得到mask。
(4)根据mask选择切割点,先按宽度方向找,再按高度方向找。
(5)视频所有帧都按该切割点切割。
(6)将切好的图片输出成指定尺寸。

针对图片的切割:
(1)如果没有指定背景色,根据图片的四个角的block,取众数推断背景色。block_size可设置。
(2)获取全图中每个像素点对应的颜色名称,得到mask。
(3)根据mask选择切割点,先按宽度方向找,再按高度方向找,再按宽度方向找。
(4)将切好的图片输出成指定尺寸。

3 效果

(1)切割视频,并按切割尺寸输出。

python3 codes/crop_video_by_color.py --input_video ./data/1.mp4 --output_video ./results/videos/1.mp4

demo1

图3-1 按原始尺寸切割

(2)切割视频,并按resize后crop的方式输出成指定尺寸

python3 codes/crop_video_by_color.py --input_video ./data/1.mp4 --output_video ./results/videos/1_720x1080.mp4 --output_size 720x1080

demo2

图3-2 resize后crop到指定的尺寸

(3)切割视频,并按resize后pad的方式输出到指定尺寸

python3 codes/crop_video_by_color.py --input_video ./data/1.mp4 --output_video ./results/videos/1_720x1080_pad.mp4 --output_size 720x1080 --pad_mode outside

demo3

图3-3 resize后pad到指定的尺寸
(4)切割图片,按切割尺寸输出
python3 codes/crop_image_by_color.py --input_image ./data/5.jpeg --output_image_dir ./results/images/5/

demo4

图3-4 切割多张小图
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七元权

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值