gpt4 book ai didi

c++ - 将一系列图像写入缓冲存储器的最佳方法

转载 作者:行者123 更新时间:2023-11-28 08:11:18 26 4
gpt4 key购买 nike

有没有办法使用imencodeimdecode将程序中生成的系列图像写入和读取到全局缓冲区中?

我正在使用 cv::Mat阅读我的图像。我不想使用 vector<Mat>IplImage* 的数组因为我和他们有一些问题?

最佳答案

听起来您希望将所有图像的数据连续存储在一个大缓冲区中。当然,这不适用于 cv::Mat 的数组(或 vector ),因为它们只是自己分配图像数据内存的包装器。

这仍然可以使用 cv::Mat 来实现。您首先分配整个缓冲区,当然大小适合包含所有图像,然后使用 cv::Mat constructor接受指向用户分配数据的指针:

Mat::Mat(int rows, int cols, int type, void* data, size_t step=AUTO_STEP) 

为各个子图像提供适当的data 指针。这样,cv::Mat 只是您自己的图像数据的轻量级包装器,无论它存储在何处。但当然,现在您负责管理(分配和释放)图像数据存储并提供正确大小的存储。

但请记住,这只会将图像数据(像素)存储在一个大的连续缓冲区中。图像属性(如宽度、高度、位深度)存储在 cv::Mat 对象中。所以我不太确定这个全局缓冲存储是否真的会在性能或可用性方面给你带来任何好处,也许如果图像非常(非常!)小。当然,您会失去 cv::Mat 的资源管理功能,因为您现在管理图像内存并需要使其与图像的属性保持同步。

关于c++ - 将一系列图像写入缓冲存储器的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8988471/

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