我有一个 opencv 垫子,它有 M 行和 3 列,有没有办法对垫子重新排序,以便切换第一列和最后一列(即第三列(,而中间列保持原位而不复制数据?
OpenCV 数据是一个像素数组。有时你可以得到一个图像的列或矩形视图(如col(((。其中数据不是连续的,据我所知,它是通过行之间的步骤计算的。但是,数据是共享的,并且仍然是一个数组。
那么问题就变成了:我可以在不复制数据的情况下交换数组的两个部分吗?据我所知,没有。
您可以使用OpenCV的优化函数来交换它们,但数据将被复制。
此外,非连续数据比OpenCV函数中的连续数据慢得多。更多内容可以在这里阅读。
您可以使用 OpenCV 函数flip
。例如,下面的代码翻转有关中间列的图像。
int main ()
{
Mat img, flipped; //your mat
img =imread("lena.jpg");
flip(img,flipped ,1); // flipped is the output
imshow("img",flipped);
waitKey(0);
}