您从sip.voidptrQImage.constBits转到ctypes void或char指针
问题说明
我正在使用python,当然您不能很快遍历大图像的每个像素,因此我只能使用C DLL。
I'm using python and of course you can't loop through every pixel of a large image very quickly, so I defer to a C DLL.
I想要做这样的事情:
I want to do something like this:
img = QImage("myimage.png").constBits()
imgPtr = c_void_p(img)
found = ctypesDLL.myImageSearchMethod(imgPtr, width, height)
但是这行
imgPtr = c_void_p(img)
产量
But this line imgPtr = c_void_p(img) yelds
builtins.TypeError:无法转换为指针
builtins.TypeError: cannot be converted to pointer
我不需要修改这些位。请教我您在这方面的绝地方式。
I don't need to modify the bits. Please teach me your Jedi ways in this area.
正确答案
如此处, sip.voidptr .__ int __()
方法 p>
As stated here, sip.voidptr.__int__()
method
将地址返回为整数
returns the address as an integer
c_void_p
文档说
构造函数接受一个可选的整数初始值设定项。
The constructor accepts an optional integer initializer.
因此您应该能够通过传递 sip.voidptr .__ int __() c_void_p
c $ c>方法构造函数:
So you should be able to build a c_void_p
passing the return value of sip.voidptr.__int__()
method to its constructor:
imgPtr = c_void_p(img.__int__())
我以此方式测试了此解决方案:
I tested this solution this way:
from PyQt5 import QtGui
from ctypes import *
lib = CDLL("/usr/lib/libtestlib.so")
image = QtGui.QImage("so.png")
bits = image.constBits()
bytes = image.bytesPerLine()
lib.f(c_void_p(bits.__int__()), c_int(image.width()), c_int(image.height()), c_int(bytes))
哪个功能可以正常工作,例如:
Which works fine with a function like:
#include <cstdio>
#include <QImage>
extern "C" {
void f(unsigned char * c, int width, int height, int bpl)
{
printf("W:%d H:%d BPL:%d\n", width, height, bpl);
QImage image(c, width, height, bpl, QImage::Format_RGB32);
image.save("test.bmp");
}
}
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /reply/detail/tanhcfkakb
-
YouTube API 不能在 iOS (iPhone/iPad) 工作,但在桌面浏览器工作正常?
it1352 07-30 -
iPhone,一张图像叠加到另一张图像上以创建要保存的新图像?(水印)
it1352 07-17 -
保持在后台运行的 iPhone 应用程序完全可操作
it1352 07-25 -
使用 iPhone 进行移动设备管理
it1352 07-23 -
在android同时打开手电筒和前置摄像头
it1352 09-28 -
扫描 NFC 标签时是否可以启动应用程序?
it1352 08-02 -
检查邮件是否发送成功
it1352 07-25 -
Android微调工具-删除当前选择
it1352 06-20 -
希伯来语的空格句子标记化错误
it1352 06-22 -
Android App 和三星 Galaxy S4 不兼容
it1352 07-20