我在Python中有一些代码,我想读取图像并在g ++中对其进行一些更正。 这是python编码。
import moim
import cv2
def main():
img1 = cv2.testimg('im0.png')
print (img1[1][1][0])
newimg = moim.testimg(img1)
print(status)
if __name__ == '__main__':
main()
这是c文件:
#include <Python.h>
static PyObject* testimg(PyObject* self,PyObject *args)
{
PyObject *float_list;
int pr_length;
double *pr;
if (!PyArg_ParseTuple(args, "O", &float_list))
return NULL;
pr_length = PyObject_Length(float_list);
if (pr_length < 0)
return NULL;
pr = (double *) malloc(sizeof(double *) * pr_length);
if (pr == NULL)
return NULL;
for (int index = 0; index < pr_length; index++) {
PyObject *item;
item = PyList_GetItem(float_list, index);
if (!PyFloat_Check(item))
pr[index] = 0.0;
pr[index] = PyFloat_AsDouble(item);
}
return Py_BuildValue("i", _asdf(pr, pr_length));
}
static PyMethodDef module_methods[] = {
{"Test",Test,METH_VARARGS, ""},
{"testimg",testimg,METH_VARARGS,""},
{NULL,NULL,0,NULL}
};
static struct PyModuleDef moim =
{
PyModuleDef_HEAD_INIT,
"moim", /* name of module */
NULL, /* module documentation, may be NULL */
-1, /* size of per-interpreter state of the module, or -1 if the module keeps state in global variables. */
module_methods
};
PyMODINIT_FUNC PyInit_moim(void)
{
return PyModule_Create(&moim);
}
这是构建lib时使用的gcc构建字符串。
gcc -fPIC -shared -I /usr/include/python3.5 -o moim.so moim.c
但是如何将图像中的2D数组解析为c文件并再次返回?