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
  • 相关阅读:
    SpringBoot-基于Maven工程使用SpringBoot
    Nginx的Mainline version、Stable version、Legacy version的版本区别
    Keepalived+Nginx实现负载均衡高可用
    Angular5学习笔记
    Angular5学习笔记
    Angular5学习笔记
    Angular5学习笔记
    Angular5学习笔记
    Kettle能做什么?
    Angular5学习笔记
  • 原文地址:https://www.cnblogs.com/charleshuang/p/4189445.html
Copyright © 2011-2022 走看看