aihot  2017-05-16 22:10:52  OpenCV |   查看评论   

测试代码test_transpose.cpp:

 
  1. #include "test_transpose.hpp"  
  2. #include <assert.h>  
  3. #include <iostream>  
  4. #include <string>  
  5. #include <opencv2/opencv.hpp>  
  6. #include <transpose.hpp>  
  7.   
  8. int test_transpose_uchar()  
  9. {  
  10.     cv::Mat matSrc = cv::imread("E:/GitCode/OpenCV_Test/test_images/lena.png", 1);  
  11.     if (!matSrc.data) {  
  12.         std::cout << "read image fail" << std::endl;  
  13.         return -1;  
  14.     }  
  15.   
  16.     int width = matSrc.cols;  
  17.     int height = matSrc.rows;  
  18.     cv::Mat matSrc_;  
  19.     cv::resize(matSrc, matSrc_, cv::Size(width, width));  
  20.   
  21.     fbc::Mat_<uchar, 3> mat1(width, width);  
  22.     memcpy(mat1.data, matSrc_.data, width * width * 3);  
  23.     fbc::transpose(mat1, mat1);  
  24.   
  25.     cv::Mat mat1_(width, width, CV_8UC3);  
  26.     memcpy(mat1_.data, matSrc_.data, width * width * 3);  
  27.     cv::transpose(mat1_, mat1_);  
  28.   
  29.     assert(mat1.rows == mat1_.rows && mat1.cols == mat1_.cols && mat1.step == mat1_.step);  
  30.     for (int y = 0; y < mat1.rows; y++) {  
  31.         const fbc::uchar* p1 = mat1.ptr(y);  
  32.         const uchar* p2 = mat1_.ptr(y);  
  33.   
  34.         for (int x = 0; x < mat1.step; x++) {  
  35.             assert(p1[x] == p2[x]);  
  36.         }  
  37.     }  
  38.   
  39.     cv::Mat matSave(width, width, CV_8UC3, mat1.data);  
  40.     cv::imwrite("E:/GitCode/OpenCV_Test/test_images/transpose_fbc.jpg", matSave);  
  41.     cv::imwrite("E:/GitCode/OpenCV_Test/test_images/transpose_cv.jpg", mat1_);  
  42.   
  43.     cv::Mat matSrc1 = cv::imread("E:/GitCode/OpenCV_Test/test_images/1.jpg", 1);  
  44.     if (!matSrc1.data) {  
  45.         std::cout << "read image fail" << std::endl;  
  46.         return -1;  
  47.     }  
  48.   
  49.     width = matSrc1.cols;  
  50.     height = matSrc1.rows;  
  51.   
  52.     fbc::Mat_<uchar, 3> mat2(height, width, matSrc1.data);  
  53.     fbc::Mat_<uchar, 3> mat3(width, height);  
  54.     fbc::transpose(mat2, mat3);  
  55.   
  56.     cv::Mat mat2_(height, width, CV_8UC3, matSrc1.data);  
  57.     cv::Mat mat3_;  
  58.     cv::transpose(mat2_, mat3_);  
  59.   
  60.     assert(mat3.rows == mat3_.rows && mat3.cols == mat3_.cols && mat3.step == mat3_.step);  
  61.     for (int y = 0; y < mat3.rows; y++) {  
  62.         const fbc::uchar* p1 = mat3.ptr(y);  
  63.         const uchar* p2 = mat3_.ptr(y);  
  64.   
  65.         for (int x = 0; x < mat3.step; x++) {  
  66.             assert(p1[x] == p2[x]);  
  67.         }  
  68.     }  
  69.   
  70.     cv::Mat matSave1(width, height, CV_8UC3, mat3.data);  
  71.     cv::imwrite("E:/GitCode/OpenCV_Test/test_images/transpose1_fbc.jpg", matSave1);  
  72.     cv::imwrite("E:/GitCode/OpenCV_Test/test_images/transpose1_cv.jpg", mat3_);  
  73.   
  74.     return 0;  
  75. }  
  76.   
  77. int test_transpose_float()  
  78. {  
  79.     cv::Mat matSrc = cv::imread("E:/GitCode/OpenCV_Test/test_images/lena.png", 1);  
  80.     if (!matSrc.data) {  
  81.         std::cout << "read image fail" << std::endl;  
  82.         return -1;  
  83.     }  
  84.     cv::cvtColor(matSrc, matSrc, CV_BGR2GRAY);  
  85.     matSrc.convertTo(matSrc, CV_32FC1);  
  86.   
  87.     int width = matSrc.cols;  
  88.     int height = matSrc.rows;  
  89.     cv::Mat matSrc_;  
  90.     cv::resize(matSrc, matSrc_, cv::Size(width, width));  
  91.   
  92.     fbc::Mat_<float, 1> mat1(width, width);  
  93.     memcpy(mat1.data, matSrc_.data, width * width * sizeof(float));  
  94.     fbc::transpose(mat1, mat1);  
  95.   
  96.     cv::Mat mat1_(width, width, CV_32FC1);  
  97.     memcpy(mat1_.data, matSrc_.data, width * width * sizeof(float));  
  98.     cv::transpose(mat1_, mat1_);  
  99.   
  100.     assert(mat1.rows == mat1_.rows && mat1.cols == mat1_.cols && mat1.step == mat1_.step);  
  101.     for (int y = 0; y < mat1.rows; y++) {  
  102.         const fbc::uchar* p1 = mat1.ptr(y);  
  103.         const uchar* p2 = mat1_.ptr(y);  
  104.   
  105.         for (int x = 0; x < mat1.step; x++) {  
  106.             assert(p1[x] == p2[x]);  
  107.         }  
  108.     }  
  109.   
  110.     cv::Mat matSrc1 = cv::imread("E:/GitCode/OpenCV_Test/test_images/1.jpg", 1);  
  111.     if (!matSrc1.data) {  
  112.         std::cout << "read image fail" << std::endl;  
  113.         return -1;  
  114.     }  
  115.     cv::cvtColor(matSrc1, matSrc1, CV_BGR2GRAY);  
  116.     matSrc1.convertTo(matSrc1, CV_32FC1);  
  117.   
  118.     width = matSrc1.cols;  
  119.     height = matSrc1.rows;  
  120.   
  121.     fbc::Mat_<float, 1> mat2(height, width, matSrc1.data);  
  122.     fbc::Mat_<float, 1> mat3(width, height);  
  123.     fbc::transpose(mat2, mat3);  
  124.   
  125.     cv::Mat mat2_(height, width, CV_32FC1, matSrc1.data);  
  126.     cv::Mat mat3_;  
  127.     cv::transpose(mat2_, mat3_);  
  128.   
  129.     assert(mat3.rows == mat3_.rows && mat3.cols == mat3_.cols && mat3.step == mat3_.step);  
  130.     for (int y = 0; y < mat3.rows; y++) {  
  131.         const fbc::uchar* p1 = mat3.ptr(y);  
  132.         const uchar* p2 = mat3_.ptr(y);  
  133.   
  134.         for (int x = 0; x < mat3.step; x++) {  
  135.             assert(p1[x] == p2[x]);  
  136.         }  
  137.     }  
  138.   
  139.     return 0;  
  140. }  
 

除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自OpenCV代码提取:transpose函数的实现

留言与评论(共有 0 条评论)
   
验证码:
[lianlun]1[/lianlun]