在不复制数据的情况下更改 opencv mat 中的列顺序
Change columns order in opencv mat without copying data
我有一个 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);
}
相关文章:
- C++中的openCV Mat访问冲突
- OpenCV 和从 OutputArrays 或 (Mat) 读取数据
- 为什么用cv::Mat(opencv)更改指向数据的指针与cv::filter2D有问题
- 在Android Java应用程序中使用OpenCV Mat.OpenCV Mat出现NoClassDefFound错误
- 在MFC图片框中显示IPLimage/ MAT (opencv)
- 不完整的类型 "cv::Mat" opencv c++
- 从NumPy数组到Mat(OpenCV)的C++转换
- 从Mat(OpenCV)生成具有透明度的PNG
- 将2个Mat的内容添加到另一个Mat opencv c++中
- Mat& vs Mat opencv 2 c++
- 堆损坏错误;无法发布 cv::Mat opencv
- 在矢量到矢量中复制数据<float> <Mat> (Opencv/C++)
- 将矢量保存在Mat opencv中
- 如何将使用Qt Paint Application绘制的图像传输到Mat openCV
- 如何在<Mat>opencv c++中有效地清除向量
- 我可以确定cv::Mat Opencv中的频道数量吗
- Mat OpenCv的赋值错误
- 使用Mat OpenCV访问像素
- 如何在不同的线程中将图像数据从BitmapSource(WPF)复制到C++/CLI中的cv::Mat(OpenCV)
- 计算 Mat OpenCV 子集的总和