草庐IT

ctype_alpha

全部标签

python - numpy 通过 ctypes 调用 sse2

简而言之,我正在尝试从python调用共享库,更具体地说,是从numpy。共享库是使用sse2指令在C中实现的。启用优化,即使用-O2或–O1构建库,我在通过ctypes调用共享库时遇到奇怪的段错误。禁用优化(-O0),一切都按预期进行,就像将库直接链接到c程序(优化或未优化)时的情况一样。您会在附件中找到一个片段,其中展示了我系统上描述的行为。启用优化后,gdb在__builtin_ia32_loadupd(__P)atemmintrin.h:113报告段错误。__P的值被报告为优化掉。测试.c:#include#includevoidtest(constintm,constdoub

Python 对象作为 ctypes 回调函数中的用户数据

C函数myfunc对更大的数据block进行操作。结果以block的形式返回给回调函数:intmyfunc(constchar*data,int(*callback)(char*result,void*userdata),void*userdata);使用ctypes,从Python代码调用myfunc并将结果返回给Python回调函数没什么大不了的。此回调工作正常。myfunc=mylib.myfuncmyfunc.restype=c_intmyfuncFUNCTYPE=CFUNCTYPE(STRING,c_void_p)myfunc.argtypes=[POINTER(c_char

python - 删除 Python 对象时,Ctypes Structures 和 POINTERS 是否会自动释放内存?

当使用PythonCTypes时,有结构允许您在Python端克隆c结构,还有POINTERS对象从内存地址值创建一个复杂的Python对象,并可用于通过引用传回对象等等C代码。我在文档或其他地方找不到的是当包含结构类的Python对象从C代码的返回指针(即C函数为结构分配的内存)取消引用时会发生什么自己删除了。原始C结构的内存是否已释放?如果不是怎么办?此外——如果Structure本身包含指向也由C函数分配的其他数据的指针怎么办?删除Structure对象会释放其成员上的指针吗?(我怀疑是)否则——怎么办?尝试从Python调用系统“免费”以获取结构中的指针对我来说会使Python

使用 ctypes 和 windll 的带有图标的 Python MessageBox

因此,我正在寻找一种仅使用native库在Python中创建简单Messagebox的方法,并遇到了几篇文章,但即thisone,利用ctypes导入win32.dll并调用其MessageboxA函数。importctypes#AnincludedlibrarywithPythoninstall.ctypes.windll.user32.MessageBoxA(0,"Yourtext","Yourtitle",1)我认为这是非常酷的东西。---但是---当我什么时候看documentationforMessageboxAonMicrosoft'ssite,事实证明这个Messageb

Python:我们可以将 ctypes 结构转换为字典吗?

我有一个ctypes结构。classS1(ctypes.Structure):_fields_=[('A',ctypes.c_uint16*10),('B',ctypes.c_uint32),('C',ctypes.c_uint32)]如果我有X=S1(),我想从这个对象返回一个字典:例如,如果我做类似的事情:Y=X.getdict()或Y=getdict(X),那么Y可能看起来像:{'A':[1,2,3,4,5,6,7,8,9,0],'B':56,'C':8986}有什么帮助吗? 最佳答案 大概是这样的:defgetdict(st

python - 通过自省(introspection)打印 ctypes "Structure"的所有字段

测试.c:#include#includestructs{chara;intb;floatc;doubled;};structs*create_struct(){structs*res=malloc(sizeof(structs));res->a=1;res->b=2;res->c=3.0f;res->d=4.0;returnres;}测试.py:fromctypesimport*classS(Structure):_fields_=[('a',c_byte),('b',c_int),('c',c_float),('d',c_double)]lib=CDLL('./test.so')c

android - 如何在帧中实时加入具有 alpha/透明度的 png

我在OpenCVandroid2.4.11的示例下工作,它使用相机检测面部。我没有在找到的脸上画一个矩形,而是试图在脸上放一个面具(png图像)。但是为了在脸上显示图像,png图像带有透明的黑色背景。FdActivity.javapublicvoidonCameraViewStarted(intwidth,intheight){mGray=newMat();mRgba=newMat();//LoadmymaskpngBitmapimage=BitmapFactory.decodeResource(getResources(),R.drawable.mask_1);mask=newMat

c++ - 如何在 Python ctypes 中处理 C++ 返回类型 std::vector<int>?

我找不到ctypes如何弥合std::vector和Python之间的差距;互联网上没有提到的组合。这是不好的做法,它不存在还是我遗漏了什么?C++:xxx.cpp#include#includeusingnamespacestd;extern"C"std::vectorfoo(constchar*FILE_NAME){stringline;std::vectorresult;ifstreammyfile(FILE_NAME);while(getline(myfile,line)){result.push_back(1);}return(result);}Python:xxx.pyim

python - 如何使用 ctypes 将 null 传递给外部库,并使用 ctypeslib.ndpointer 声明的参数?

灵感来自另一个answer在这里,我有一个使用ctypeslib.ndpointer调用的ctypes函数:lib.foo.argtypes=[ctypeslib.ndpointer(np.complex64,ndim=1,flags='C'),POINTER(c_int)]外部函数声明如下:voidfoo(cmplx_float*array,int*length)我的问题是我想调用该函数两次。第一次我想将nullptr传递给array参数,这样我就可以找出所需的长度。然后第二次,我会传入一个numpy数组。所以我这样做:lib.foo(None,length)失败并出现以下错误:ct

python - 为什么 ctypes 将 Python 列表转换为 C 数组的速度如此之慢?

我的代码的瓶颈目前是使用ctypes从Python列表到C数组的转换,如所述inthisquestion.一个小实验表明,与其他Python指令相比,它确实很慢:importtimeitsetup="fromarrayimportarray;importctypes;t=[iforiinrange(1000000)];"print(timeit.timeit(stmt='(ctypes.c_uint32*len(t))(*t)',setup=setup,number=10))print(timeit.timeit(stmt='array("I",t)',setup=setup,numb