OpenCVでよく使われるMat、Point、Rectangleなどのデータ構造のまとめ
3324 ワード
本論文ではOpencvの一般的なデータ構造をまとめます.
まとめの初志は、OpenCVがMat元素の和を求める操作をしていないことを発見しました.だからよくまとめます
1、Mat baic function example
OpenCVについては、pythonでの画像処理は
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.
まとめの初志は、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、GpuMatvoid GpuMat::GpuMat(const cv::Mat& host_data);
void GpuMat::upload(const cv::Mat& host_data);
void GpuMat::download(cv::Mat& host_data);
//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.