OpenCV图像几何变换——转置,镜像,倒置

图像几何变换方法之——remap使用

                                                                   源图像

一、图像转置

 

 1 #include <iostream>
 2 #include <opencv2/opencv.hpp>
 3 using namespace std;
 4 using namespace cv;
 5 int main()
 6 {
 7     Mat src = imread("lena.jpg",CV_LOAD_IMAGE_UNCHANGED);    
 8     imshow("src",src);
 9     Mat dst;
10     dst.create( src.size(), src.type());
11     Mat map_x;
12     Mat map_y;
13     map_x.create( src.size(), CV_32FC1);
14     map_y.create( src.size(), CV_32FC1);
15     for( int i = 0; i < src.rows; ++i)
16     {
17         for( int j = 0; j < src.cols; ++j)
18         {
19             map_x.at<float>(i, j) = (float) i;//j;//(src.cols - j) ;
20             map_y.at<float>(i, j) = (float) j;//(src.rows - i) ;
21         }
22     }
23     remap(src, dst, map_x, map_y, CV_INTER_LINEAR);
24     imshow("dst", dst);    
25     imwrite("invert3.jpg", dst);
26     waitKey(0);
27     system("pause");
28     return 0;
29 }

 

                                                   

 

                                                                                                    结果图

二、图像倒置

 

 1 #include <iostream>
 2 #include <opencv2/opencv.hpp>
 3 using namespace std;
 4 using namespace cv;
 5 int main()
 6 {
 7     Mat src = imread("lena.jpg",CV_LOAD_IMAGE_UNCHANGED);    
 8     imshow("src",src);
 9     Mat dst;
10     dst.create( src.size(), src.type());
11     Mat map_x;
12     Mat map_y;
13     map_x.create( src.size(), CV_32FC1);
14     map_y.create( src.size(), CV_32FC1);
15     for( int i = 0; i < src.rows; ++i)
16     {
17         for( int j = 0; j < src.cols; ++j)
18         {
19             map_x.at<float>(i, j) = (float) j;//j;//(src.cols - j) ;
20             map_y.at<float>(i, j) = (float) (src.rows - i) ;
21         }
22     }
23     remap(src, dst, map_x, map_y, CV_INTER_LINEAR);
24     imshow("dst", dst);    
25     imwrite("invert.jpg", dst);
26     waitKey(0);
27     system("pause");
28     return 0;
29 }

 

                                                   

 

 

                                                                                                                    倒置结果图

三、图像水平镜像

 

 1 #include <iostream>
 2 #include <opencv2/opencv.hpp>
 3 using namespace std;
 4 using namespace cv;
 5 int main()
 6 {
 7     Mat src = imread("lena.jpg",CV_LOAD_IMAGE_UNCHANGED);    
 8     imshow("src",src);
 9     Mat dst;
10     dst.create( src.size(), src.type());
11     Mat map_x;
12     Mat map_y;
13     map_x.create( src.size(), CV_32FC1);
14     map_y.create( src.size(), CV_32FC1);
15     for( int i = 0; i < src.rows; ++i)
16     {
17         for( int j = 0; j < src.cols; ++j)
18         {
19             map_x.at<float>(i, j) = (float) (src.cols - j) ;
20             map_y.at<float>(i, j) = (float) i;//(src.rows - i) ;
21         }
22     }
23     remap(src, dst, map_x, map_y, CV_INTER_LINEAR);
24     imshow("dst", dst);    
25     imwrite("invert2.jpg", dst);
26     waitKey(0);
27     system("pause");
28     return 0;
29 }

 

                                                              

 

                                                                                                                            水平镜像结果图

四、水平镜像倒置

 

 1 #include <iostream>
 2 #include <opencv2/opencv.hpp>
 3 using namespace std;
 4 using namespace cv;
 5 int main()
 6 {
 7     Mat src = imread("lena.jpg",CV_LOAD_IMAGE_UNCHANGED);    
 8     imshow("src",src);
 9     Mat dst;
10     dst.create( src.size(), src.type());
11     Mat map_x;
12     Mat map_y;
13     map_x.create( src.size(), CV_32FC1);
14     map_y.create( src.size(), CV_32FC1);
15     for( int i = 0; i < src.rows; ++i)
16     {
17         for( int j = 0; j < src.cols; ++j)
18         {
19             map_x.at<float>(i, j) = (float) (src.cols - j) ;
20             map_y.at<float>(i, j) = (float) (src.rows - i) ;
21         }
22     }
23     remap(src, dst, map_x, map_y, CV_INTER_LINEAR);
24     imshow("dst", dst);    
25     imwrite("invert2.jpg", dst);
26     waitKey(0);
27     system("pause");
28     return 0;
29 }

                                                          

 

                                                                                                                       水平镜像倒置结果图

                                   图像像素重映射见链接:https://www.cnblogs.com/Jack-Elvis/p/11526970.html

posted @ 2022-03-30 17:15  量子与太极  阅读(624)  评论(0编辑  收藏  举报