对于一个程序宅来说,一直有想法把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后,打开摄像头如下:
调用如下: