cr2格式怎么打开(详细教您cr2怎么打开)

访客3年前黑客文章1019

最近帮朋友处理一个.CR2图片格式转jpg。因为他是用C++编程的,让我写个python脚本,将cr2格式转为jpg格式,所以会涉及到C++调用python函数,下面给大家分享一下过程。

首先我们写一个CR2CVTJPG.py的文件

import numpy as npfrom PIL import Imagefrom rawkit.raw import Rawfrom rawkit.options import WhiteBalanceimport os.path import globdef cr2cvtjpg(): basepath = os.path.dirname(os.path.abspath(r'C:UsersLeowenAnaconda3Libsite-packagesLibRaw-0.18.13inlibraw.dll')) os.environ['PATH'] = basepath +os.pathsep + os.environ['PATH'] # 获取图片 imagePaths = glob.glob("C:\Users\Leowen\Desktop\image"+"\*.CR2") # 循环处理单个图片 for (i,imagePath) in enumerate(imagePaths): with Raw(filename=imagePath) as raw: raw.options.white_balance = WhiteBalance(camera=False, auto=True) outputpath = "C:\Users\Leowen\Desktop\" +str(i) + ".ppm" raw.save(filename=outputpath) img = Image.open(outputpath) jpgoutputpath = "C:\Users\Leowen\Desktop\" +str(i) + ".jpg" img.save(jpgoutputpath)

这个python程序就不解释了,这是python的知识,我们这里主要将C++调用python函数。

我用anaconda3安装的python36。VS编辑器用的是VS2015.

首先我们新建一个项目

C++调用python函数(cr2转jpg)

然后新建一个main.cpp文件。在我们属性管理器中,修改我们的项目的解决方案平台x64。

main.cpp内容为:

#include  #include int main(int argc, char* argv[]){ // init python Py_SetPythonHome(L"C:\Users\Leowen\Anaconda3"); Py_Initialize(); if (!Py_IsInitialized()) return -1; const char *scriptDirectoryName = "C:\Users\Leowen\Desktop\20181130test\ConsoleApplication1\ConsoleApplication1"; Py_Initialize(); PyObject *sysPath = PySys_GetObject("path"); PyObject *path = PyUnicode_FromString(scriptDirectoryName); int result = PyList_Insert(sysPath, 0, path); PyObject *pModule = PyImport_ImportModule("CR2CVTJPG"); // load python script  if (!pModule) { std::cout << "can't find CR2CVTJPG.py" << std::endl; return -1; } //  PyObject* pDict = PyModule_GetDict(pModule); if (!pDict) { return -1; } // get "add" function  PyObject* pFunc = PyDict_GetItemString(pDict, "cr2cvtjpg"); if (!pFunc || !PyCallable_Check(pFunc)) { std::cout << "can't find function [cr2cvtjpg]" << std::endl; return -1; } // parameter  //PyObject *pArgs = PyTuple_New(2); //两个参数 //PyTuple_SetItem(pArgs, 0, Py_BuildValue("l", 3)); //PyTuple_SetItem(pArgs, 1, Py_BuildValue("l", 4)); // call python script  //PyObject_CallObject(pFunc, pArgs);//调用函数 PyObject_CallObject(pFunc,NULL);//调用函数 //  //Py_DECREF(pName); //Py_DECREF(pArgs);//打印调用信息 Py_DECREF(pModule); // close python  Py_Finalize(); return 0;}

C++调用python函数(cr2转jpg)

接着我们配置项目属性

将python的头文件(比如C:UsersLeowenAnaconda3include)添加到, 项目属性页->VC++目录-> 包含目录。

将python.lib文件(比如C:UsersLeowenAnaconda3libs)添加到,配置->链接器->输入->附加依赖项。

C++调用python函数(cr2转jpg)

接下来修改pyconfig.h文件。

找到C:UsersLeowenAnaconda3includepyconfig.h文件,打开文件,搜索python36_d.lib,将

# if defined(_DEBUG)# pragma comment(lib,"python36_d.lib")

修改为:

# if defined(_DEBUG)# pragma comment(lib,"python36.lib")

再搜索Py_DEBUG,将

#ifdef _DEBUG# define Py_DEBUG#endif

修改为:

#ifdef _DEBUG//# define Py_DEBUG#endif

接下来,将我们的python脚本拷贝到我们项目文件中

C++调用python函数(cr2转jpg)

生成解决方案:

C++调用python函数(cr2转jpg)

运行结果

C++调用python函数(cr2转jpg) 

 

相关文章

脚本错误怎么解决(详细教您脚本错误怎么解决

脚本错误怎么解决(详细教您脚本错误怎么解决

如何解决当前脚本发生错误,我相信很多小伙伴们遇到这类问题很头疼吧,不知道怎么办是吧,不过没关系的,由我分享一下如何解决这类问题方法 工具 在ie游览器上操作 操作方法 01 进入ie游览器,...

怎么保存整个网页(详细教您如何将整个网页保存为图片)

怎么保存整个网页(详细教您如何将整个网页保存为图片)

当我们在网上看到内容,可是还没有看完的时候,而我们又有其他工作需要做的时候,我们城市想到想把网页生存下来,等下次再看。可是我们要怎么把网页生存下来呢?本日小编就来汇报你们怎么生存网页。此刻我们利用电脑...

一样是荔枝,选青色还是红色的?果农教您一招,以后别再乱买了

一样是荔枝,选青色还是红色的?果农教您一招,以后别再乱买了

二姐心得之一样是荔枝,选青色还是红色的 现在正是荔枝大量上市的时候,到了水果摊位我们就能看到个个饱满浑圆的荔枝,想到打开荔枝之后就能吃到的荔枝嫩滑还香甜的果肉,还带着一点荔枝水,我们就想着买点荔枝回...

冰点还原精灵怎么用(详细教您使用方法)

冰点还原精灵怎么用(详细教您使用方法)

冰点还原破解中文版可以保护您的硬盘免受病毒侵害,重新恢复删除或覆盖的文件,彻底清除安装失败的程序,并避免由于系统死机带来的数据丢失等问题。只需简单的几步安装,即可安全地保护您的硬盘数据。还原精灵的安装...

默认网关怎么填(教您如何设置默认网关)

默认网关怎么填(教您如何设置默认网关)

什么是默认网关呢?我有一个十分通俗十分简单的说法。一般现在的电脑主机使用的网关就是默认网关。但是有的时候我们也是需要设置它的~所以小编下面就来给你们说说如何设置默认网关。 1.点“开始”菜单,找到并...

笔记本蓝牙怎么开(详细教您怎么开启笔记本蓝

笔记本蓝牙怎么开(详细教您怎么开启笔记本蓝

通常情况下,笔记本电脑和手机一样配备有内置蓝牙设备,我们平常可能较少使用。不过有用户当需要使用笔记本蓝牙时,发现笔记本电脑蓝牙打不开,在这样的情况下,我们应该怎么解决呢?下面介绍一下如何开启笔记本电脑...