gpt4 book ai didi

c++ - 覆盖 cv::Mat 数据的最佳方法

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

目前我有这样的东西,因为我找不到更好的东西在 OpenCV Mat API 上进行快速扫描:

cv::Mat frame_mat(width, height, CV_8UC3);

for(;;) {
// Obtain raw data
frame_mat = cv::Mat(height, width, CV_8UC3, raw_data);
// Use frame_mat
}

它看起来对资源不友好,在高层次上它似乎在每次迭代时为临时 cv::Mat 对象分配和释放内存,只是为了设置一个全局对象。

如何直接设置free_mat

最佳答案

您不需要在循环外分配任何东西。您的代码应该是:

for(;;) {
// Obtain raw data
Mat frame_mat(height, width, CV_8UC3, raw_data);
// Use frame_mat
}

在这种情况下,frame_mat 只是 raw_data 的包装器,允许您将其传递给 OpenCV 函数。它没有分配任何内存,除了一个很小的恒定大小的 header 。也不允许取消分配不是由它分配的内存,所以不要忘记在作用域结束时释放你的 raw_data。

另请记住,如果您更改 frame_mat 中的像素值,raw_data 也会更改。

关于c++ - 覆盖 cv::Mat 数据的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28943697/

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