我有一个有M行和3列的opencv垫子,有没有办法重新排序垫子,这样第一个和最后一个(即第三个)列被切换,而中间列保持在原位没有< / strong>复制数据?
答案 0 :(得分:3)
OpenCV数据是一个像素数组。有时您可以获得图像的列或矩形视图(例如使用col())。其中数据不是连续的,据我所知,它是在行之间的步骤计算的。但是数据是共享的,仍然是一个数组。
然后问题变成:我可以交换数组的两个部分而不复制数据吗?不是我所知道的。
您可以使用OpenCV的优化功能进行交换,但数据将被复制。
此外,非连续数据比OpenCV函数中的连续数据慢。更多可以是read here。
答案 1 :(得分:2)
您可以使用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);
}