草庐IT

ctype_alpha

全部标签

python - 如何获得正确的alpha值来完美融合两幅图像?

我一直在尝试混合两个图像。我目前采用的方法是,我获得了两个图像重叠区域的坐标,并且仅针对重叠区域,在添加它之前,我将其与0.5的硬编码alpha混合。所以基本上我只是从两个图像的重叠区域中取出每个像素值的一半,然后添加它们。这并没有给我一个完美的混合,因为alpha值被硬编码为0.5。这是混合3张图像的结果:如您所见,从一张图片到另一张图片的过渡仍然可见。我如何获得可以消除这种可见过渡的完美alpha值?还是没有这样的事情,我采取了错误的方法?这是我目前进行混合的方式:foriinrange(3):base_img_warp[overlap_coords[0],overlap_coor

python - 在 ctypes.Structure 中使用枚举

我有一个通过ctypes访问的结构:structattrl{char*name;char*resource;char*value;structattrl*next;enumbatch_opop;};到目前为止,我的Python代码如下:#structattroplclassattropl(Structure):passattrl._fields_=[("next",POINTER(attropl)),("name",c_char_p),("resource",c_char_p),("value",c_char_p),但我不确定要为batch_op枚举使用什么。我应该将它映射到c_int

python - 使用 ctypes 将 2d numpy 数组传递给 c

使用ctypes将numpy二维数组传递给c函数的正确方法是什么?到目前为止我目前的方法(导致段错误):C代码:voidtest(double**in_array,intN){inti,j;for(i=0;iPython代码:fromctypesimport*importnumpy.ctypeslibasnpctarray_2d_double=npct.ndpointer(dtype=np.double,ndim=2,flags='CONTIGUOUS')liblr=npct.load_library('libtest.so','./src')liblr.test.restype=No

python - 从 Python (ctypes) 调试 C 库

我有一个使用ctypes和C共享库(dll文件)的Python程序。作为IDE,我正在使用Eclipse,这两个项目都将在其中开发(C共享库和使用它的python程序)。我的想法是:当我在Debug模式下启动Python程序时,我能否以某种方式调试也用C编写的共享库?含义:我可以设置断点吗?当Python程序到达共享库中的断点时,执行停止,我可以更改变量值等吗? 最佳答案 实际上,在Eclipse中使用CDT和PyDev环境是一件相当简单的事情。我在这里假设您已经正确配置了项目,因此您可以单独构建和调试每个项目。基本上,您只需在De

python - ctypes 和字符串

我有一个简单的C文件:char*initializetest(){char*test=malloc(1000);returntest;}intsearchtest(char*test){strcpy(test,"test");return0;}main(){char*test=initializetest();searchtest(test);printf("%s\n",test);}和python文件:fromctypesimport*classTest(object):def__init__(self):self.test_library=CDLL("test.so")self.t

python - 如何从 python ctypes 中取消引用内存位置?

我想在pythonctypes中复制以下c代码:main(){long*ptr=(long*)0x7fff96000000;printf("%lx",*ptr);}我可以弄清楚如何将此内存位置作为函数指针调用,而不仅仅是进行正常的解引用:fromctypesimport*""">>>fptr=CFUNCTYPE(None,None)Traceback(mostrecentcalllast):File"",line1,inFile"/usr/lib/python2.6/ctypes/__init__.py",line104,inCFUNCTYPEclassCFunctionType(_C

python - 加载和访问多个 ctype 实例

我有一些在Python中使用的现有C代码。我可以使用以下命令加载库:library_path='/full/path/to/my/library.dylib'lib1=cdll.LoadLibrary(library_path)问题是我需要有这个库的多个实例,例如:lib2=cdll.LoadLibrary(library_path)这会创建第二个实例,但两者似乎具有相同的内存位置(句柄相同)。我试过将library.dylib复制并重命名为library1.dylib和library2.dylib,但这并没有改变它们的加载方式。问题是当我在lib1中调用函数时,lib2中的全局变量和

python - 在 python 程序中通过 ctypes 使用具有线程本地存储的共享库时发生内存泄漏

我在python中使用ctypes模块来加载共享的c-library,其中包含线程本地存储。它是一个相当大的C库,历史悠久,我们正在努力使线程安全。该库包含大量全局变量和静态变量,因此我们最初的线程安全策略是使用线程本地存储。我们希望我们的库独立于平台,并且一直在win32、win64和64位Ubuntu上编译和测试线程安全。从纯c进程来看,似乎没有任何问题。但是在win32和Ubuntu上的python(2.6和2.7)中,我们看到内存泄漏。当python线程终止时,线程本地存储似乎没有被正确释放。或者至少python进程不知何故“不知道”内存已被释放。实际上,在win32上的c#程

python - 我怎样才能得到方法作为 python ctypes 的回调?

我有一个与pythonctypes包交互的Capi。一切正常,除了这个小花絮。为了将函数注册为某些通知的回调,我调用了这个函数:voidRegisterNotifyCallback(intloginId,intextraFlags,void*(*callbackFunc)(Notification*))所以在python中我的代码看起来像:CALLBACK=ctypes.CFUNCTYPE(None,ctypes.POINTER(Notification))func=CALLBACK(myPythonCallback)myLib.RegisterNofityCallback(45454

python - 使用 ctypes 从共享库映射全局变量

我想映射一个int值pbs_errno使用ctypes在库libtorque.so中声明为全局。目前我可以像这样加载库:fromctypesimport*libtorque=CDLL("libtorque.so")并成功映射了一堆功能。然而,出于错误检查的目的,他们中的许多人设置了pbs_errno变量,所以我也需要访问它。但是,如果我尝试访问它,我会得到:>>>pytorque.libtorque.pbs_errno当然,它不是函数指针,尝试调用它会导致段错误。它在主头文件中声明为intpbs_errno;,在API头文件中声明为externintpbs_errno;。Objdump