c++ - 在不复制数据的情况下更改 opencv mat 中的列顺序

标签 c++ opencv

我有一个有 M 行和 3 列的 opencv 垫子,有没有办法重新排序垫子,以便切换第一列和最后一列(即第三列),同时中间列保持原位没有 复制数据?

最佳答案

OpenCV 数据是一个像素数组。有时您可以获得图像的列或矩形 View (例如使用 col() )。其中数据不是连续的,据我所知,它是在行与行之间进行计算的。然而,数据是共享的并且仍然是一个数组。

那么问题就变成了:我可以在不复制数据的情况下交换数组的两个部分吗?据我所知不是。

你可以使用OpenCV的优化函数来交换它们,但是数据会被复制。

此外,在 OpenCV 函数中,非连续数据比连续数据慢得多。更多可以read here .

关于c++ - 在不复制数据的情况下更改 opencv mat 中的列顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47263322/

相关文章:

python - Gtk-警告 ** : cannot open display:

Python OpenCV : mouse callback for drawing rectangle

c++ - SimpleBlobDetector 异常

python - 为Python 2.7安装opencv时DLL加载失败错误

c++ - 从 Visual C++ 移植到 Borland C++ Builder 的 ActiveX 代码

c++ - 在 vector 中的指针上使用 delete

C++ 程序在重新执行时加速

c++ - 未包含自定义头文件

python - Numpy np.any 范围或阈值

c++ - 模板化虚拟函数替代品