• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

您从sip.voidptrQImage.constBits转到ctypes void或char指针

用户头像
it1352
帮助1

问题说明

我正在使用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.

正确答案

#1

此处 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
系列文章
更多 icon
同类精品
更多 icon
继续加载