快捷导航

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

[复制链接]
查看: 667|回复: 0

8万

主题

8万

帖子

26万

积分

论坛元老

Rank: 8Rank: 8

积分
260116
发表于 2020-11-11 00:00:00 | 显示全部楼层 |阅读模式
  近期帮盆友解决一个.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脚本制作拷到大家新项目文档中

  形成解决方法:

  运作結果

(责任编辑:网络)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精彩推荐

让创业更简单

  • 反馈建议:XXXXXXXX
  • 客服电话:暂时没有
  • 工作时间:周一到周五9点~22点

云服务支持

黑客联盟,快速搜索

关注我们

Copyright 黑客论坛  Powered by©  技术支持: