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

【详细教您cr2怎么打开cr2格式怎么打开】最近帮朋友处理一个.CR2图片格式转jpg 。因为他是用C++编程的 , 让我写个脚本 , 将cr2格式转为jpg格式 , 所以会涉及到C++调用函数 , 下面给大家分享一下过程 。
首先我们写一个.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)
这个程序就不解释了 , 这是的知识 , 我们这里主要将C++调用函数 。
我用安装的 。VS编辑器用的是.
首先我们新建一个项目

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

文章插图
然后新建一个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 scriptif (!pModule) { std::cout << "can't find CR2CVTJPG.py" << std::endl; return -1; } //PyObject* pDict = PyModule_GetDict(pModule); if (!pDict) { return -1; } // get "add" functionPyObject* 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 pythonPy_Finalize(); return 0;}
详细教您cr2怎么打开  cr2格式怎么打开

文章插图
接着我们配置项目属性
将的头文件(比如C:)添加到 ,  项目属性页->VC++目录-> 包含目录 。
将.lib文件(比如C:libs)添加到 , 配置->链接器->输入->附加依赖项 。
详细教您cr2怎么打开  cr2格式怎么打开

文章插图
接下来修改.h文件 。
找到C:.h文件 , 打开文件 , 搜索.lib , 将
# if defined(_DEBUG)# pragma comment(lib,"python36_d.lib")
修改为:
# if defined(_DEBUG)# pragma comment(lib,"python36.lib")
再搜索 , 将
修改为:
#ifdef _DEBUG//# define Py_DEBUG#endif
接下来 , 将我们的脚本拷贝到我们项目文件中
详细教您cr2怎么打开  cr2格式怎么打开

文章插图
生成解决方案:
详细教您cr2怎么打开  cr2格式怎么打开

文章插图
运行结果