cv::Mat的本质是矩阵。openCV对Mat类型的处理,实际上也是矩阵操作。这里给个小例子,介绍转置操作和翻转操作。这段代码受了
http://www.tuicool.com/articles/emIr2u
的启发。
原图:
Mat m1 = imread("E:\\lena.jpg");
Mat m2;
Mat m3;
flip(m1, m2, 1);
transpose(m1, m3);
imwrite("E:\\flip.jpg", m2);
imwrite("E:\\transpose.jpg", m3);
翻转操作的结果:
转置的结果:
注意,转置的结果不同于旋转。比方说矩阵:
转置后的结果是
若要实现M1的90度旋转,还要让M2绕第二列翻转。
同理,要旋转一个Mat格式的图像,也要经过Transpose和 flip两道操作才能完成。