最近打算用python仿真一下ISP pipeline的算法,但是发现python在处理大图像方面非常慢,于是想到用python调用c的函数,在c中做图像的像素级别的操作。要用调用c中函数,我们首先需要解决如何将numpy的array的buffer传入到c函数以及如何返回的问题。
下面就是一个简单的demo。python 代码:
import os.path
import numpy as np;
import matplotlib.pylab as plt;
import math;
import scipy.signal as signal;
import ctypes;
from ctypes import *;
import os;
libISPAlgorithm = cdll.LoadLibrary("C:\\Users\\kuiw\\Documents\\Visual Studio 2015\\Projects\\test\\x64\\Debug\\ISPAlgorithm.dll");
class GraphFigure:
def __init__(self):
self.index=0;
def ShowImage(self,arr):
self.index = self.index + 1;
plt.figure(self.index);
#print self.index;
plt.imshow(arr,cmap='gray');
def ShowArray(self,arr):
self.index = self.index + 1;
plt.figure(self.index);
#print self.index;
plt.imshow(arr,aspect='auto');