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

访客4年前黑客文章1064

最近帮朋友处理一个.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) 

 

相关文章

dat格式怎么打开(详细教您怎么打开dat文件)

dat格式怎么打开(详细教您怎么打开dat文件)

相信大家平时在使用电脑的时候都遇到后缀名为dat的文件,但却又不知道是什么意思,更不要是怎么打开了。为此,接下来小编就给大家介绍dat文件怎么打开的方法,大家有不妨来瞧瞧啊~ 1,,音视频文件,一般...

360浏览器怎么清除缓存(详细教您怎么清除缓存

360浏览器怎么清除缓存(详细教您怎么清除缓存

如何清理浏览器缓存 [多浏览器]? 现在的互联网各大公司都在争相做客户端,其中网络浏览器的竞争非常地激烈。不过微软凭借他的IE6、7、8、9的产品线仍然占据了市场的一半份额以上,其他的厂商的竞争可想...

vob文件怎么打开(教您打开vob文件的操作步骤)

vob文件怎么打开(教您打开vob文件的操作步骤)

视频VOB格式如何正常打开播放 今天小编上传视频,发现是VOB格式,居然头条视频识别不了,也打不开,为此,网上查询了一下,唯有暴风影音可以打开,再就是转换视频格式为MP4格式。 VOB是DVD V...

怎么更改桌面图标(教您怎样更改桌面图标)

怎么更改桌面图标(教您怎样更改桌面图标)

打开桌面,桌面上摆放了放多程序的快捷方式,我们每天打开电脑最先接触的就是这些快捷方式图标。时间长了,是不是感觉乏味了。可以换一换。比如,在我的电脑桌面上有这样一个图标,那怎样更改桌面图标?下面,小编给...

绿豆芽怎么发?教您在家轻松自发健康绿豆芽的方法和技巧

绿豆芽怎么发?教您在家轻松自发健康绿豆芽的方法和技巧

教您用一个洗菜蓝,一把绿豆,一条毛巾和水,不用买豆芽机,自己就可以在家里种出健康的绿豆芽了,只需五天的时间就可以吃到自己亲手种出的绿豆芽,方法简单可行易做,快来学学吧! 市场上卖的绿豆芽大多数是...

怎么卸载qq宠物(详细教您怎么删除qq宠物)

怎么卸载qq宠物(详细教您怎么删除qq宠物)

每次电脑登录QQ都被QQ宠物搞得很烦,每次都不理她,不给吃不给喝,准备熬死她,蛋酥,我发现可能被熬死的不是她,而是我。于是我终于找到了可以删除QQ宠物的办法。 在此之前,要看你只是不想QQ宠物运行还是...