OpenCV辅助类型
一、InputArray 和OutArray类
OpenCV中许多函数将矩阵作为参数传入也将矩阵作为返回值返回,另一方面OpenCV中存在许多不同类别的矩阵,如Scalar、Vec、Matx及C++标准库中的Vector<>甚至是后面要涉及的大型矩型阵列(Mat和SpareMat)
为了保证错综复杂的各类矩形类型保持相互联系,OpenCV定义了InputArray和OutArray类型,也就是说OpenCV库中这两种类型意味着是满足我们在使用时所用到的各种矩形的格式;OpenCV中也定义了InputOutputArray来支持数组的“就地”计算;
InputArray 和OutArray类区别在于InputArray在声明时定义为const属性(只读属性);
二、Range类
Range类被用来定义一个连续的整型序列,Range类对象存在两个参数:start和end;即构造函数Range(int start,int end),注意所表示的范围包含start但不包含end,例如Range rng(0,4),表示所包含的数值为0,1,2,3不包含4;
Range类常用的成员函数
1 size() -用于返回当前范围的元素数量 2 empty() -查询范围是否没有元素 3 all() -用来表示所指定的当前范围所包含的全部内容
示例演示:
1 #include <opencv2/highgui.hpp> 2 #include <opencv2/core.hpp> 3 #include <iostream> 4 using namespace std; 5 using namespace cv; 6 7 int main() 8 { 9 Range rng( 1, 4); 10 cout << rng.start << endl; 11 cout << rng.size() << endl; 12 cout << rng.empty() << endl; 13 cout << rng.end << endl; 14 return 0; 15 }
三、补充部分
3.1 C语言使用内联函数来实现C++中的构造,进行函数参数传递,可自行查询
3.2 通常图像是8位,即一个像素用了8位进制数,若该进制数是有符号的,则最大表示范围是-127~+128,若为无符号,则最大表示范围是0~256,说明该图像最多有256个层次的灰度值。
例如:若灰度图为2位,则最多只有0 1 2 3 四种层次的灰度;
若灰度图为1位,则最多只有0 1 两种灰度,即非黑即白;