ffmpeg+x265精简压缩图片

可以看到700M的图片可以压缩到只有9M,并且模型推理精度只会下降0.07.有很多种压缩方式,经过大量实验qb36是最好的,默认使用这个。

@input_images:原始图片。

@mkv_files\qb36:中转文件,也就是说原始图片要先转换为.mkv文件,然后继而转换为被压缩后的图片。

@output_images:不用多说,压缩后的图片。

NOTE:只需安装ffmpeg。 

 👑核心代码:

import os
import glob
from tqdm import tqdmclass x265_encode_decode_Tool(object):def __init__(self, quality, mkv_path, input_img_path, output_img_path) -> None:self.quality = qualityself.mkv_path = mkv_pathself.input_img_path = input_img_pathself.output_img_path = output_img_pathself.mkvFile = ""if not os.path.exists(self.mkv_path):os.makedirs(self.mkv_path)if not os.path.exists(self.output_img_path):os.makedirs(self.output_img_path)def run_x265_encode(self):label_list=os.listdir(self.input_img_path)for label in tqdm(label_list):    #xxx.jpg'''jpg to mkv with qpxx'''os.chdir(self.input_img_path)  # .../JPEGImages/cmd_jpg_to_mkv="ffmpeg -i " + label + " -c:v libx265 -x265-params qp="\+ self.quality[2:] + " "+ self.mkv_path + "/"+\label[:len(label)-4]+".mkv"# print(cmd_jpg_to_mkv)os.system(cmd_jpg_to_mkv)def run_x265_decode(self):# '''#    mkv to jpg# '''label_list=os.listdir(self.input_img_path)for label in tqdm(label_list):    #xxx.jpgos.chdir(self.mkv_path + "/" + self.mkvFile) #.../x265_VOC2007/cmd_mkv_to_jpg = "ffmpeg -i  "+label[:len(label)-4]+".mkv -r 1 \-f image2 "+ self.output_img_path + "/" + self.mkvFile + "/" + label# print(cmd_mkv_to_jpg)os.system(cmd_mkv_to_jpg)def run_x265_encode_and_decode(self):label_list=os.listdir(self.input_img_path)for label in tqdm(label_list):    #xxx.jpg'''jpg to mkv with qpxx'''os.chdir(self.input_img_path)  # .../JPEGImages/cmd_jpg_to_mkv="ffmpeg -i " + label + " -c:v libx265 -x265-params qp="\+ self.quality[2:] + " "+ self.mkv_path + "/"+\label[:len(label)-4]+".mkv"# print(cmd_jpg_to_mkv)os.system(cmd_jpg_to_mkv)# '''#     mkv to jpg# '''os.chdir(self.mkv_path + "/" + self.mkvFile) #.../x265_VOC2007/cmd_mkv_to_jpg = "ffmpeg -i  "+label[:len(label)-4]+".mkv -r 1 \-f image2 "+ self.output_img_path + "/" + self.mkvFile + "/" + label# print(cmd_mkv_to_jpg)os.system(cmd_mkv_to_jpg)

👑调用接口:

from x265_encode_and_decode import x265_encode_decode_Toolif __name__ == "__main__":quality = 'qb36'mkv_path = '/data2/personal/jiangziliang/projects/x265_imageCompressor/mkv_files/%s' % qualityinput_img_path = r'/data2/personal/jiangziliang/projects/x265_imageCompressor/input_images'output_img_path = r'/data2/personal/jiangziliang/projects/x265_imageCompressor/output_images'x265Tools = x265_encode_decode_Tool(quality, mkv_path, input_img_path, output_img_path)'''jpeg -> mkv'''# x265Tools.run_x265_encode()'''mkv -> jpeg'''# x265Tools.run_x265_decode()'''jpeg -> mkv -> jpeg'''# x265Tools.run_x265_encode_and_decode()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/329011.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mysql与Redis如何保证数据一致性问题

目录 一、Mysql与Redis同步数据是否存在延迟呢? 二、如何保证一致性? 2.1、第一种方式:手动编码 2.2、第二种方式:MQ异步更新 2.3、第三种方式:binlog同步数据 2.4、第四种方式:双写一致性 2.5、第五…

vue3 vuedraggable draggable element must have an item slot

vue3vite 看官网使用这种<template #item“{ element }”> <draggablev-model"myArray"start"onStart"end"onEnd":sort"false"item-key"id"draggable".item"handle".mover" ><template…

linux中最常用的网络命令

文章目录 linux中最常用的网络命令查看网络信息的原初 ifconfig默认无参数使用-s显示短列表配置IP地址修改MTU启动关闭网卡 网络中不中&#xff0c;先看ping行不行语法不加任何参数发送指定数目设定发送时间间隔组合使用 Linux ip命令显示网络设备设置IP地址启动关闭网卡统计方…

视图与索引连表查询(内/外联)和子查询

目录 一、视图 1.1、概念&#xff1a; 1.2、场景&#xff1a; 1.3、用视图的意义 1.2、创建(增加)视图 1.3、修改视图 1.4、删除视图 1.5、查看视图 ​编辑 二、索引 2.1、概念 2.2、优缺点 优点&#xff1a; 缺点&#xff1a; 2.3、应用场景 2.4、会失效 2.5、…

2024年汉字小达人区级选拔备考——选择题:选字填空

前面的几篇文章&#xff0c;六分成长介绍了汉字小达人区级选拔样题的前面三道题&#xff1a;看拼音写汉字、补充成语、诗词连线&#xff0c;这三道大题都是填空题&#xff0c;适合线下笔试&#xff0c;不太适合线上比赛。事实上&#xff0c;在区级自由比赛和市级比赛的时候&…

【LMM 012】TinyGPT-V:24G显存训练,8G显存推理的高效多模态大模型

论文标题&#xff1a;TinyGPT-V: Efficient Multimodal Large Language Model via Small Backbones 论文作者&#xff1a;Zhengqing Yuan, Zhaoxu Li, Lichao Sun 作者单位&#xff1a;Anhui Polytechnic University, Nanyang Technological University, Lehigh University 论文…

MIT 6.s081 实验解析——labs2

系列文章目录 MIT 6.s081 实验解析——labs1 MIT 6.s081 实验解析——labs2 文章目录 系列文章目录测试判断流程System call tracingsysinfo![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/ab9ca34f1fc64b6aa1df74613dc1a397.png) 测试判断流程 完成代码后将.c文…

MySql海量数据存储与优化

一、Mysql架构原理和存储机制 1.体系结构 2.查询缓存 3.存储引擎 存储引擎的分类 innodb&#xff1a;支持事务&#xff0c;具有支持回滚&#xff0c;提交&#xff0c;崩溃恢复等功能&#xff0c;事务安全myisam:不支持事务和外键&#xff0c;查询速度高Memory&#xff1a;利…

应用OpenCV绘制箭头

绘制箭头函数 方法&#xff1a;函数cv2.arrowedLine( ) 语法格式&#xff1a;cv2.arrowedLine(img, pt1, pt2, color[, thickness[, line_type[, shift[, tipLength]]]]) 参数说明&#xff1a; img&#xff1a;要画的直线所在的图像&#xff0c;也称为画布。。 pt1&#x…

西电期末1027.判断同构数

一.题目 二.分析与思路 不用把他转成字符串再转成数字之类的&#xff0c;用数学解决就好&#xff01;找出一个数的最后位就是将其对求余啊&#xff0c;找一个数有几位以前也有过啊&#xff0c;那不就过了嘛&#xff01; 三.代码实现 #include<bits/stdc.h>//万能头 in…

msckf_vio在ubuntu20.04中的编译

1.新建catkin workspace文件夹&#xff0c;并在其中新建src文件夹&#xff0c;并将源码clone至src内。 源码地址&#xff1a;https://github.com/KumarRobotics/msckf_vio 目录层级示意如下&#xff0c;build和devel不必新建&#xff0c;后续指令会自动新建。 2. 在编译之前…

探索网络信息的利器 whois

文章目录 探索网络信息的利器 whois什么是whois命令&#xff1f;如何使用whois命令&#xff1f;注意事项 更多信息 探索网络信息的利器 whois 在网络的世界中&#xff0c;虚虚实实&#xff0c;真真假假&#xff0c;了解域名、IP地址的所有者信息是至关重要的。 Linux系统也提供…