opencv3.2测试代码

测试opencv的下列功能:

  • 从Mat截取矩形ROI
  • 读取Mat中每个点的像素值
#include <opencv2/opencv.hpp>
//#define _MAT_RECT_
#define __MAT_DATA_

int main(){
#ifdef _MAT_RECT_
    cv::Mat src, roi;
    src = cv::imread("../rgb.png");
    cv::Rect box(186,176,104,144);
    box &= cv::Rect(0,0,src.cols,src.rows);
    roi = src(box);
    cv::imshow("roi",roi);
    cv::waitKey(10000);
#endif

#ifdef __MAT_DATA_
    std::string type[]= {"CV_8U","CV_8S","CV_16U","CV_16S","CV_32S","CV_32F","CV_64F"};
    cv::Mat src = cv::imread("../d.png",CV_LOAD_IMAGE_UNCHANGED);
    printf("channel : %d\n", src.channels());
    printf("type : %s\n", type[src.depth()].c_str() );
    printf("depth : %d\n", src.depth());
    printf("dim : %d\n", src.dims);
    /*printf("CV_8U : %d\n", CV_8U);
    printf("CV_8S : %d\n", CV_8S);
    printf("CV_16U : %d\n", CV_16U);
    printf("CV_16S : %d\n", CV_16S);
    printf("CV_32S : %d\n", CV_32S);
    printf("CV_32F : %d\n", CV_32F);
    printf("CV_64F : %d\n", CV_64F);
    printf("CV_8UC2 : %d\n", CV_8UC2);
    printf("CV_8SC2 : %d\n", CV_8SC2);
    printf("CV_16UC2 : %d\n", CV_16UC2);
    printf("CV_16SC2 : %d\n", CV_16SC2);
    printf("CV_32SC2 : %d\n", CV_32SC2);
    printf("CV_32FC2 : %d\n", CV_32FC2);
    printf("CV_64FC2 : %d\n", CV_64FC2);
    printf("CV_8UC3 : %d\n", CV_8UC3);
    printf("CV_8SC3 : %d\n", CV_8SC3);
    printf("CV_16UC3 : %d\n", CV_16UC3);
    printf("CV_16SC3 : %d\n", CV_16SC3);
    printf("CV_32SC3 : %d\n", CV_32SC3);
    printf("CV_32FC3 : %d\n", CV_32FC3);
    printf("CV_64FC3 : %d\n", CV_64FC3);*/
    int channel = src.channels();
    int row = src.rows, col = src.cols * channel;
    ushort *p;
    if(src.isContinuous()) {
        col *= row;
        row = 1;
    }
    for(int i = 0; i < row; ++i){
        p = src.ptr<ushort>(i);
        for(int j = 0; j < col; ++j)
            printf("%d\n",p[j]);
    }
#endif

    return 0;
}
发布了50 篇原创文章 · 获赞 31 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/random_repick/article/details/73863272
今日推荐