您的位置:首页 > 编程语言 > C语言/C++

Python编程->混合编程(C++,python,opencv)实现

2014-04-15 09:46 477 查看
     对于一个程序宅来说,一直有想法把C++,opencv,python结合起来,python的并发性优点,opencv的图像处理算法的优点,C++的灵活,然后就开始了下面的旅程:

 

     配置版本:VS2008+Python2.7+OpenCV2.1.0

    

     源码:

OpenCV2.1.0  sampes里面的Python例程camera.py:

     


将其放到VS2008的例子python的工程目录下:



然后就开始写代码了:

#include "stdafx.h"
#include "python.h"
#include <tchar.h>
#define _AFXDLL
#include "stdafx.h"
#include <stdio.h>
#include <string>
#include <iostream>
#include <fstream>
#include <cstring>
#include <afx.h>
#include <iostream>
using namespace std;
#pragma comment (lib,"python27.lib")

int test1()
{
Py_Initialize();

CString strPath;

GetCurrentDirectory(MAX_PATH,strPath.GetBuffer(MAX_PATH));

char ch[BUFSIZ];
WideCharToMultiByte( CP_ACP, WC_COMPOSITECHECK, (strPath.GetBuffer(strPath.GetLength() + 1)), -1, ch, sizeof(ch), NULL, NULL );
;

strPath.ReleaseBuffer();

string tmpStr;
cout << ch << endl;
int len = strlen(ch);
string fileName = "\\camera.py";
for( int i = 0; i < int(fileName.length()); i++)
ch[len++] = fileName[i];

ch[len] = '\0';
cout << ch << endl;
PyObject *pyfile = PyFile_FromString(ch,"r");
if(pyfile==NULL)
{
printf("exit 1");
system("pause");
return 1;
}
FILE *f = PyFile_AsFile(pyfile);
if(f==NULL)
{
printf("exit 2");
system("pause");
return 1;

}
PyRun_AnyFileEx(f,"camera.py",0);

Py_Finalize();

}
int main()
{
test1();
system("pause");
}
点击Run后,打开摄像头如下:



调用如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: