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

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

黑客平台hacker2020-11-11 0:00:002941A+A-

  近期帮盆友解决一个.CR2图片的格式转jpg。由于他是用C 程序编写的,要我写个python脚本制作,将cr2格式变为jpg格式,因此 会牵涉到C 启用python函数,下边给大伙儿共享一下全过程。

  最先大家写一个CR2CVTJPG.py的文档

  import numpy as np

  from PIL import Image

  from rawkit.raw import Raw

  from rawkit.options import WhiteBalance

  import os.path

  import glob

  def 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.

  最先大家新创建一个新项目

  随后新创建一个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); //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;

  }

  然后大家配备新项目特性

  将python的头文件(例如C:UsersLeowenAnaconda3include)加上到, 新项目特性页->VC 文件目录->包括文件目录。

  将python.lib文件(例如C:UsersLeowenAnaconda3libs)加上到,配备->连接器->键入->额外依靠项。

  接下去改动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脚本制作拷到大家新项目文档中

  形成解决方法:

  运作結果

(责任编辑:网络)

点击这里复制本文地址 以上内容由黑资讯整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

黑资讯 © All Rights Reserved.  
Copyright Copyright 2015-2020 黑资讯
滇ICP备19002590号-1
Powered by 黑客资讯 Themes by 如有不合适之处联系我们
网站地图| 发展历程| 留言建议| 网站管理