zoukankan      html  css  js  c++  java
  • OpenCV 2.4.9 学习笔记(4)—— 像素类型与Templates的限制使用

    限制使用templates

      C++中的Templates使得接口机制非常好用,高效而且能够保证数据与算法的安全。但是过多地使用templates可能会增加计算时间和代码长度,有时候还能难区分接口和实现。在OpenCV中过多使用templates并不是一件好事,OpenCV的refman中提到OpenCV中很多的算法代码文件动不动就几千行,而且OpenCV需要简化对其他语言的支持,像JAVA、PYTHON、MATLAB等并没有templates,所以使用templates也会受到限制,还有一些其他的原因。总的来说,在现在的OpenCV版本中,是限制使用templates的。

    基本存储类型(像素)

    OpenCV操作的原始数据类型(像素级)有以下几种:

    Mat_<uchar>对应的是CV_8U,Mat_<uchar>对应的是CV_8U,Mat_<char>对应的是CV_8S,Mat_<int>对应的是CV_32S,Mat_<float>对应的是CV_32F,Mat_<double>对应的是CV_64F,对应的数据深度如下:

    8-bit unsigned integer (uchar)
    8-bit signed integer (schar)
    16-bit unsigned integer (ushort)
    16-bit signed integer (short)
    32-bit signed integer (int)
    32-bit floating-point number (float)
    64-bit floating-point number (double)

    在枚举中的代号为:

    1 enum { CV_8U=0, CV_8S=1, CV_16U=2, CV_16S=3, CV_32S=4, CV_32F=5, CV_64F=6 };

    举例:

    1 Mat mtx(3, 3, CV_32F); // make a 3x3 floating-point matrix
    2 Mat cmtx(10, 1, CV_64FC2); // make a 10x1 2-channel floating-point matrix (10-element complex vector)
    3 Mat img(Size(1920, 1080), CV_8UC3); // make a 3-channel (color) image of 1920 columns and 1080 rows.
    4 Mat grayscale(image.size(), CV_MAKETYPE(image.depth(), 1)); // make a 1-channel image of the same size and same channel type as img
  • 相关阅读:
    【小米oj】 dreamstart 的催促
    【小米oj】 抢劫!
    【小米oj】 数数有几个岛
    【小米oj】 找出单独出现的数字II
    【小米oj】 出现频率最高的前 K 个元素
    【小米oj】 分糖果
    【小米oj】 需要多少个立方数
    【小米oj】 反向位整数
    linux内核参数注释与优化
    设置yum源:
  • 原文地址:https://www.cnblogs.com/charleshuang/p/4189445.html
Copyright © 2011-2022 走看看