cv::Mat的翻转: 1 水平 0 垂直 -1 兼有水平 垂直 和转置
void main() { Mat m1 = imread("E:\\learnProg\\OpenCV\\OpenCV2ComputerVisionApplicationProgrammingCookbook\\images\\lake.jpg"); Mat m2; Mat m2_1; Mat m2_2; Mat m3; flip(m1, m2, 1); flip(m1, m2_1, 0); flip(m1, m2_2, -1); transpose(m1, m3); namedWindow("src", 1); imshow("src", m1); waitKey(0); // drawing the results namedWindow("m2 1", 1); imshow("m2 1", m2); waitKey(0); namedWindow("m2_1 0", 1); imshow("m2_1 0", m2_1); waitKey(0); namedWindow("m2_2 -1", 1); imshow("m2_2 -1", m2_2); waitKey(0); namedWindow("m3", 1); imshow("m3", m3); waitKey(0); }
cv::Mat的翻转和转置
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两道操作才能完成。
http://blog.csdn.net/liji_digital/article/details/55107161

                
            
        
浙公网安备 33010602011771号