赞
踩
最近儿子用佳能单反相机拍了1000+张学校运动会的照片,默认情况下佳能相机本身会保存有CR2原始格式和jpg格式的相片,老婆在通过笔记本电脑插入sd卡,进行相片处理的时候,通过搜索框过滤出来所有jpg的图像,不小心把所有jpg图像都删除了,儿子的班主任要求提交的是jpg图像格式的照片。呜呼!悲哉!幸好,CR2的照片在sd卡中还存在。
有没有办法批量地把CR2格式的照片转换成jpg格式的照片呢?
首先,想到的是找一个图像转换软件来完成批量转换,百度了一下,居然发现了第一个就是:
下载安装,使用一下,先是非会员最多只能处理3张图片:
注册会员,登陆成功,非VIP用户转换后的图片会带上水印,诶,看来不能白嫖呀。
估计别的图片转换的工具也是类似的情况,懒得找啦,决定尝试自己用python开发一个转换的小程序。
开发环境:windows10 + conda + python 3.11 + pycharm
conda create -y -n img_converter python=3.11
conda activate img_converter
pip install rawpy opencv-python
cr2_to_jpg.py
- import rawpy
- import cv2
- import os
-
- if __name__ == '__main__':
- cr2_image_dir = 'D:\\运动会'
- # opencv的imwrite方法不支持包含中文的路径,如果路径中包含中文,会导致保存失败。
- # jpg_image_dir = 'D:\\运动会_jpg'
- jpg_image_dir = 'D:\\ydh_jpg' # 修改为非中文路径,避免保存失败
- os.makedirs(jpg_image_dir, exist_ok=True)
- cr2_files = os.listdir(cr2_image_dir)
- cnt = 1
- print(f'total: {len(cr2_files)}')
- for cr2_file in cr2_files:
- if cr2_file.endswith('.CR2'):
- jpg_file_name = cr2_file.replace('.CR2', '') + '.jpg'
- jpg_file_path = os.path.join(jpg_image_dir, jpg_file_name)
- # 避免中途中断重复处理
- if os.path.exists(jpg_file_path):
- continue
- cr2_img = rawpy.imread(os.path.join(cr2_image_dir, cr2_file)) # access to the RAW image
- rgb_img = cr2_img.postprocess() # a numpy RGB array
- bgr_img = cv2.cvtColor(rgb_img, cv2.COLOR_RGB2BGR) # the OpenCV image
-
- if cv2.imwrite(jpg_file_path, bgr_img, [cv2.IMWRITE_JPEG_QUALITY, 90]):
- print(f'{cnt}. save to {jpg_file_path}')
- else:
- print(f'fail to convert: {cr2_file}')
-
- cnt += 1
备注:
1)opencv的imwrite函数的路径不能包含中文,否则会导致保存图像失败;
2)可以通过“cv2.IMWRITE_JPEG_QUALITY”来控制保存的jpg图像的质量,取值为 0-100(默认值 95),数值越大则图片质量越高;
3)rawpy中的“postprocess”方法提供了很多参数,可以对raw图像做很多后置处理(比如降噪,启用白平衡,调整亮度,缩放等等)具体可以参考
RawPy class — rawpy 0.18.1 documentation
Params class — rawpy 0.18.1 documentation
把python代码保存到“D:\image_converter\cr2_to_jpg.py”
通过“cd /d D:\image_converter” 进入python脚本所在目录
“python ./cr2_to_jpg.py”
目前python程序是一个一个图像顺序进行转换,如果图像图像比较多的花,还是会比较耗时的,可以通过python的多进程模块(multipleprocess)来进行并行处理。这个实现起来也不难,目前没有这个需求,暂时就不实现了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。