紧接上文,举个实栗吧
c++ function:
extern "C" void segment(unsigned char* inputimage,unsigned char* outputimage,float a,int c)
{...}
python 传入两张ndarray 格式的image,参数传入需要变换数据类型。
import ctypes as C
projectname.functionname(inputimage.ctypes.data_as(C.POINTER(C.c_ubyte)),outputimage.ctypes.data_as(C.POINTER(C.c_ubyte)),(C.c_float)(0.9),(C.c_int)(3))
接下来的主要问题是,进到C++里面,怎么用这两个unsigned char*类型的图片呢?以下提供两种思路:
输入转化为mat,方便接下来对图像的处理
Mat inputimageMat(inputimage_rows,inputimage_cols,CV_8UC3,inputimage);
输出转化为mat,由于把输出图像的地址用来初始化这个mat,对这个mat的修改就是对输出图像的修改了。
Mat python_data(inputimageMat.rows,inputimageMat.cols, CV_8UC1, _outputimage);