gpt4 book ai didi

python - 尽快将 ctypes 数据转换为 python 字符串

转载 作者:太空宇宙 更新时间:2023-11-03 13:54:16 24 4
gpt4 key购买 nike

我正在尝试在 PyQt4 中编写一个视频应用程序,并且我使用 Python ctypes 连接到一个旧的遗留视频解码器库。该库为我提供了 32 位 ARGB 数据,我需要将其转换为 QImage。我的工作方式如下:


# Copy the rgb image data from the pointer into the buffer
memmove(self.rgb_buffer, self.rgb_buffer_ptr, self.buffer_size)

# Copy the buffer to a python string
imgdata = ""
for a in self.rgb_buffer:
imgdata = imgdata + a

# Create a QImage from the string data
img = QImage(imgdata, 720, 288, QImage.Format_ARGB32)

问题是 ctypes 将数据输出为“ctypes.c_char_Array_829440”类型,我需要将其转换为 python 字符串,以便构建 QImage。我的复制机制目前每张图像需要将近 300 毫秒,所以速度慢得令人痛苦。整个过程的解码和显示部分只需要大约 50ms。

谁能想到我可以采取任何巧妙的捷径来加快此过程并避免像我目前所做的那样复制缓冲区两次?

最佳答案

ctypes.c_char_Array_829400 实例具有返回可能包含 NUL 字节的字符串的属性 .raw 和返回的属性 .value字符串到第一个 NUL 字节(如果它包含一个或多个)。

但是,您也可以使用 ctypes 访问 self.rgb_buffer_ptr 中的字符串,如下所示:ctypes.string_at(self.rgb_buffer_ptr, self.buffer_size);这将避免调用 memmove 的需要。

关于python - 尽快将 ctypes 数据转换为 python 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/714367/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com