OpenCVでよく使われるMat、Point、Rectangleなどのデータ構造のまとめ

3324 ワード

本論文ではOpencvの一般的なデータ構造をまとめます.
まとめの初志は、OpenCVがMat元素の和を求める操作をしていないことを発見しました.だからよくまとめます
1、Mat
CV_8UC1  // 8           uchar
CV_8UC3  // 8    3       uchar

CV_32FC1  // 32         float
CV_32FC3  // 32    3     float

CV_64FC1  // 64     double 
1.2メンバー関数
Mat::t()     // Matrix transpose
Mat::inv()   // inverse    
1.3ユーティリティ
int r = countNonZero(Matirx); //    0     
meanStdDev(Matrix, mean, stddev);  //       
void minMaxLoc(InputArray src, CV_OUT double* minVal,  
                           CV_OUT double* maxVal=0, CV_OUT Point* minLoc=0,  
                           CV_OUT Point* maxLoc=0, InputArray mask=noArray());
                           //          
                           norm //    
2、GpuMat
  • baic function
  • void GpuMat::GpuMat(const cv::Mat& host_data);
    void GpuMat::upload(const cv::Mat& host_data);
    void GpuMat::download(cv::Mat& host_data);
  • example
  • //Examples
    cv::gpu::setDevice(0);  //   deviceID
    Mat host_image = cv::imload(“file.png”); //load image from file
    GpuMat device_image1;
    device_image1.upload(host_image1); //allocate memory and upload to GPU
    GpuMat device_image2;
    device_image1.copyTo(device_image2); //allocate memory and GPU-GPU copy
    device_image2.donwload(host_image); //download data
    
    3、python VS c++
    OpenCVについては、pythonでの画像処理はnumpyとして処理されていますが、c++は自分のcv::Matとしてここで二つのところが一致していません.ROI領域の切り取りをするとき、OpenCVのpythonインターフェースはスライス方式です.Matは行ごとにアクセスします.
    #python:
    raw_image = cv2.imread(path_image)
    raw_image[y1:y2, x1:x2] #y height  ,x col    
    #cpp:
    raw_image(cv::Rect(x,y,w,h))
    Ref:
    http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/core/mat%20-%20 the%20 baic%20 image%20 container/mat%20-20 the%20 baic%20 image%20 container.