1. 程式人生 > 其它 >OpenCV影象幾何變換——轉置,映象,倒置

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