详细教程:如何用python把佳能相机CR2格式的照片转换为JPG格式?

这篇具有很好参考价值的文章主要介绍了详细教程:如何用python把佳能相机CR2格式的照片转换为JPG格式?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

创作背景

最近儿子用佳能单反相机拍了1000+张学校运动会的照片,默认情况下佳能相机本身会保存有CR2原始格式和jpg格式的相片,老婆在通过笔记本电脑插入sd卡,进行相片处理的时候,通过搜索框过滤出来所有jpg的图像,不小心把所有jpg图像都删除了,儿子的班主任要求提交的是jpg图像格式的照片。呜呼!悲哉!幸好,CR2的照片在sd卡中还存在。

有没有办法批量地把CR2格式的照片转换成jpg格式的照片呢?

首先,想到的是找一个图像转换软件来完成批量转换,百度了一下,居然发现了第一个就是:

cr2 转pgm python,python,opencv,python,相机,图像处理

下载安装,使用一下,先是非会员最多只能处理3张图片:

cr2 转pgm python,python,opencv,python,相机,图像处理

注册会员,登陆成功,非VIP用户转换后的图片会带上水印,诶,看来不能白嫖呀。

cr2 转pgm python,python,opencv,python,相机,图像处理

估计别的图片转换的工具也是类似的情况,懒得找啦,决定尝试自己用python开发一个转换的小程序。

用Python实现RC2到jpg图像的批量转换

开发环境:windows10 + conda + python 3.11 + pycharm

通过conda创建虚拟环境

conda create -y -n img_converter python=3.11

cr2 转pgm python,python,opencv,python,相机,图像处理

conda activate img_converter

cr2 转pgm python,python,opencv,python,相机,图像处理

通过pip安装第三方依赖

pip install rawpy opencv-python

cr2 转pgm python,python,opencv,python,相机,图像处理

编写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脚本所在目录

cr2 转pgm python,python,opencv,python,相机,图像处理

“python ./cr2_to_jpg.py”

cr2 转pgm python,python,opencv,python,相机,图像处理

进一步优化

目前python程序是一个一个图像顺序进行转换,如果图像图像比较多的花,还是会比较耗时的,可以通过python的多进程模块(multipleprocess)来进行并行处理。这个实现起来也不难,目前没有这个需求,暂时就不实现了。

参考资料

rawpy · PyPI

​​​​API Reference — rawpy 0.18.1 documentation

opencv-python · PyPI文章来源地址https://www.toymoban.com/news/detail-774376.html

到了这里,关于详细教程:如何用python把佳能相机CR2格式的照片转换为JPG格式?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • AIGC|超详细教程提升代码效率,手把手教你如何用AI帮你编程

    目录 一、辅助编程 (一)代码生成 二、其他功能 (一)工具手册 (二)源码学习 (三)技术讨论 作为主要以 JAVA 语言为核心的后端开发者,其实,早些时间我也用过比如 Codota、Tabnine、Github 的 Copilot、阿里的 AI Coding Assistant 等 IDEA 插件,但是我并没有觉得很惊奇,感觉就

    2024年02月04日
    浏览(62)
  • Python教程:如何用Python编写FOFA爬虫获取信息?

    部分数据来源: ChatGPT         在网络安全领域,信息收集是非常重要的一环。而网上许多公开的信息都是通过搜索引擎、在线查询等方式获取的。其中,FOFA 是一个非常优秀的互联网数据搜索引擎,可以通过搜索特定的来快速获取相关的数据。 虽然 FOFA 有很多强大

    2024年02月08日
    浏览(43)
  • Unity中生成相机照片并保存到本地的详细教程

    在游戏和应用程序开发中,有时候需要通过代码在Unity中使用相机捕捉当前场景或特定视角的照片,并将其保存到本地。本教程将演示如何通过C#代码实现这一功能。 此函数的目标是使用给定的相机(photographyCamera)生成图像,并将图像保存到指定路径。函数有五个参数,分别

    2024年01月18日
    浏览(64)
  • 如何用Python进行数据分析(保姆级教程)

    有小伙伴在学Python新手教程的时候说学Python比较复杂的地方就是资料太多了,比较复杂。 很多网上的资料都是从语法教起的,花了很多时间还是云里雾里,摸不清方向。今天就给大家来捋一捋思路!帮助大家提高学习效率! Python数据分析资料可以点击下方链接或者扫描下方

    2024年01月21日
    浏览(48)
  • chatgpt赋能python:Python编程教程:如何用Python写抢购程序

    随着网购的流行和限量商品的推出,抢购已经成为了一个非常热门的话题。有些人甚至会通过软件或程序来提高他们成功抢到商品的机会。在本篇文章中,我们将介绍如何用Python编写一个简单易用的抢购程序,帮助您在抢购商品时获得竞争优势。 在编写Python抢购程序之前,您

    2024年02月07日
    浏览(50)
  • 什么是AI-Chat?如何用AI帮你画图、写文章、写PPT?详细教程来了

    AI Chat作为一款功能性极强的AI应用,它使用的模型和ChatGPT一样,有GPT-3.5和4.0模型。可以说,他们除了长得不一样,其他能力都一样。 你可以让他帮你解答与做任何事情,像写文章、写代码、写演讲稿、图片识别等这些都能轻松完成。 还能够扮演各种角色,如“法律顾问”、

    2024年02月03日
    浏览(46)
  • 【Camera2 教程二】Camera2相机打开和关闭接口调用详细说明

    上一章《Camera2教程一》里我们介绍了一些 Camera2 的基础知识,但是并没有涉及太多的 API,从本章开始我们会开发一个具有完整相机功能的应用程序,并且将相机知识分成多个篇章进行介绍,而本章所要介绍的就是相机的开启流程。 阅读本章之后,你将学会以下几个知识点:

    2024年04月25日
    浏览(35)
  • 超详细AI二维码制作教程:手把手教你如何用Stable Diffusion 生成一个创意二维码?

    AI已来,未来已来! 来势汹汹的人工智能,如同创世纪的洪水,正在全世界的范围内引发一场史无前例的科技革命。AI正在改变世界!而我们正是这场巨变的见证者。 今天我们要介绍的内容就是:如何利用AI工具Stable Diffusion,生成你的专属创意二维码? (下文包含详细图文教

    2024年02月16日
    浏览(60)
  • 如何用conda安装PyTorch(windows、GPU)最全安装教程(cudatoolkit、python、PyTorch、Anaconda版本对应问题)(完美解决安装CPU而不是GPU的问题)

            安装PyTorch的开发环境:Anaconda+CUDA+cuDNN+PyCharm Community 1.1 版本选择 第一步就是最关键的版本对应问题(这决定你能否成功安装PyTorch,以及能否成功安装GPU版本的关键问题),可以这么说,版本不能对应好,后面有很大的问题,因此,我们要先确定版本的对应关系。(

    2024年02月07日
    浏览(57)
  • 如何用Python对股票数据进行LSTM神经网络和XGboost机器学习预测分析(附源码和详细步骤),学会的小伙伴们说不定就成为炒股专家一夜暴富了

    最近调研了一下我做的项目受欢迎程度,大数据分析方向竟然排第一,尤其是这两年受疫情影响,大家都非常担心自家公司裁员或倒闭,都想着有没有其他副业搞搞或者炒炒股、投资点理财产品,未雨绸缪,所以不少小伙伴要求我这边分享下关于股票预测分析的技巧。 基于股

    2024年02月02日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包