OpenCV 2.4.9 学习笔记(4)—— 像素类型与Templates的限制使用

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

免责声明:文章转载自《OpenCV 2.4.9 学习笔记(4)—— 像素类型与Templates的限制使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Oracle EBS Form开发小技巧汇总golang的ssh例子下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

图像亮度调整

在RGB色彩空间进行亮度图像亮度调整的方法步骤: 1)计算像素在R、G、B三个分量上的平均值 2)对三个平均值分别乘以对应的亮度系数brightness,默认为1则表示亮度不变,大于1 表示亮度提高,小于1 表示亮度变暗 3)对每个像素值在R、G、B上的分量,首先减去第一步计算出来的平均值,然后再加上第二步的计算结果。 Pnew = Pold +(brig...

配置opencv cmake

第一种使用 find_package的方法示例代码如下:# 声明要求的 cmake 最低版本cmake_minimum_required( VERSION 2.8 ) # 声明一个 cmake 工程project( pro ) # 设置编译模式set( CMAKE_BUILD_TYPE "Debug" ) #添加OPENCV库#指定OpenCV版本,代码如...

opencv配置(2.49)

转载自浅墨大神http://blog.csdn.net/poem_qianmo/article/details/19809337 OpenCV2.4.9和2.4.8的配置几乎一样,唯一的区别在下文中的第五步,链接库的配置,把对应的248改成249即可。 OpenCV 3.0配置更是被简化了。和2.4.8、2.4.9的区别就是下文第五步,链接库的配置,只用...

【Python】opencv显示图像

import cv2 img = cv2.imread("lena.jpg") cv2.namedWindow("Image") cv2.imshow("Image", img) cv2.waitKey(0) cv2.destroyAllWindows()...

(全解析)屏幕尺寸,分辨率,像素,PPI之间到底什么关系?

(全解析)屏幕尺寸,分辨率,像素,PPI之间到底什么关系? 产品经理马忠信关注 22015.08.30 13:59:20字数 2,660阅读 52,661 今天我给大家来讲讲这几个咱们经常打交道的词到底啥意思,以及他们之间到底有什么关系。这篇文章是我花了一个下午从N多篇文章里提炼出的一个白话版,保证让你看得懂。 咱们从手机开始说起吧。先上一张图,给...

centos 7.5 编译并运行 opencv 4.5.1 c++

1.安装依赖项 1、yum install cmake -y 2、yum install gcc gcc-c++ kernel-devel -y 3、yum install gcc-gfortran -y 安装完后,可以用 gcc -v 、g++ -v 和 gfortran -v 查看版本。 4、yum install git -y 5、yum...