梳理程序的笔记(一)

版权声明:转载请标明出处,谢谢! https://blog.csdn.net/SimileciWH/article/details/85236391

1,parameterReader()

  1. opencv 中的mat,和matlab中的mat数据类型是一样的含义

  2. opencv中的CV_32FC1的含义是,openCV 的32位float数据使用通道(channel)1

  3. C++ string中的

    string str; 
    str.find() //返回查找字符所在的位置数
    str.substr(0,4)  //获得字符串0-4位置的字符串内容,例如"hello,world",则0-4则为"hell"
    
  4. C++中的 c.str() 和python的一样,讲其他类型转化成C语言字符串类型

  5. C++中的ifstream是用来读取整个文件的一个库类。

  6. C++在stream流类型中,有一个成员函数good().用来判断当前流的状态是否正常。

  7. C++中map的使用,

    1 声明一个map容器------- map<string, string> data
    2声明一个对应1中类型的map的迭代器 -------map<string, string>::iterator iter
    成员函数 含义
    begin() 返回指向map头部的迭代器
    clear() 删除所有元素
    count() 返回指定元素出现的次数
    empty() 如果map为空则返回true
    end() 返回指向map末尾的迭代器
    equal_range() 返回特殊条目的迭代器对
    erase() 删除一个元素
    find() 查找一个元素
    insert() 插入元素
    max_size() 返回可以容纳的最大元素个数
    size() 返回map中元素的个数
    swap() 交换两个map
    get_allocator() 返回map的配置器
    key_comp() 返回比较元素key的函数
    lower_bound() 返回键值>=给定元素的第一个位置
    max_size() 返回可以容纳的最大元素个数
    rbegin() 返回一个指向map尾部的逆向迭代器
    rend() 返回一个指向map头部的逆向迭代器
    upper_bound() 返回键值>给定元素的第一个位置
    value_comp() 返回比较元素value的函数
    3 插入数据

    ​ 其中 pairmake_pair 有first和second域,可以直接访问,

    ​ make_paire是返回一个pair<type,type>的数据。

    3.1 data[key]=vaule

    3.2 data.insert(pair<string, string>(key, value))

    3.3 data.insert(make_pair<string, string>(key, value))

4 删除和查找数据
data.find(key)    //通过key来查找
data.erase(key)  //删除
//或者
data.erase(iter)

如果查找时迭代器的键值不存在,会返回data.end()的值

  1. C++使用map的迭代器遍历比较方便;

我们都知道可以用下标运算来访问string对象和vector对象。而另外还有一种更通用的方法也可以实现这样的方法-----迭代器(iterator)类似于指针,迭代器也提供了对对象的间接访问。就迭代器而言,其对象是容器中的元素或者string中的字符。使用迭代器可以访问某个元素,迭代器也能从一个元素移动到另外一个元素。迭代器有有效和无效之分,有效的迭代器指向某个元素或者容器中尾元素的下一个位置。其他情况均为无效。

和指针不一样的是,迭代器不是使用取址符,而是使用begin和end成员。

  1. openCV mat数据类型指针ptr的使用

    mat.ptr(row)[col]

    返回的数据类型和一致,通过指针ptr定位(row)[col]位置的数据,该数据的类型要和一致

  2. C++中的 atof ( ascii to floating point numbers)函数在<stdlib.h>中,将字符串转化成双精度的浮点数。


1,相机内参矩阵,外参矩阵

内参矩阵:
(1) [ f x s x 0 0 f y y 0 0 0 1 ] \left[ \begin{matrix} f_x &amp;&amp; s &amp;&amp; x_0 \\ 0 &amp;&amp; f_y &amp;&amp; y_0 \\ 0 &amp;&amp; 0 &amp;&amp; 1 \\ \end{matrix} \right] \tag{1}
式(1)中, f x f_x f y f_y 焦距参数; x 0 x_0 y 0 y_0 为主点偏移,相机的主轴是与图像平面垂直切穿过真空的线,与图像平面的交点成为主点,主点偏移就是主点位置相对于图像平面的位置;s为坐标轴倾斜参数,理想情况下为0,即坐标轴不倾斜。

2, dmLocation()

  1. openCV中对于图像的放缩使用 resize()cvResize()

    //resize函原型
    CV_EXPORTS_W void resize( InputArray src, OutputArray dst,  
                                  Size dsize, double fx=0, double fy=0,  
                                  int interpolation=INTER_LINEAR );  
    //cvResize函数原型
    void cvResize( const CvArr* src, CvArr* dst, int interpolation=CV_INTER_LINEAR );  
    

    其中两个函数的srcdst 含义相同,都是指输入图像输出图像

    参数 interpolation是指差值方法,

    可选参数 含义
    INTER_LINEAR 双线性差值 (缺省使用)
    INTER_AREA 区域差值算法,使用象素关系重采样时,图像抽取的首选方法。当图像缩小时候,该方法可以避免波纹出现。当图像放大时,类似于 INTER_NEAREST 方法
    INTER_CUBIC 立方差值
    INTER_NEAREST 最邻近插值算法
    INTER_LANCZOS4 Lanczos插值(超过8x8领域的插值算法)
    INTER_MAX 用于插值的掩模板
    WARP_INVERSE_MAP 标志位,反变换
    WARP_FILL_OUTLIERS 标志位,用于填充目标图像的像素值,如果其中的一些值对应原图像的异常值,那么这些值讲被设为0

resize()中的 dsize表示放缩后的尺寸,(fx,fy)表示水平方向上的缩放系数垂直方向上的缩放系数,一般设为0,但是dsize(fx,fy)不能同时为0。

  1. 注意opencv中的seize()d的大小尺寸信息是 (列,行)

    Size(col, row)
    
  2. opencv中的cvtColor()用于将一个颜色空间转换到另一个颜色空间

void cv::cvtColor(
		cv::InputArray src, // 输入序列
		cv::OutputArray dst, // 输出序列
		int code, // 颜色映射码
		int dstCn = 0 // 输出的通道数 (0='automatic')
	);

opencv默认的彩色图像的颜色空间是BGR

code 参数
RGB和BGR COLOR_BGR2RGB, COLOR_RGB2BGR, COLOR_RGBA2BGRA, COLOR_BGRA2RGBA
向RGB和BGR图像中增添alpha通道 COLOR_RGB2RGBA, COLOR_BGR2BGRA
从RGB和BGR图像中去除alpha通道 COLOR_RGBA2RGB, COLOR_BGRA2BGR
从RBG和BGR颜色空间转换到灰度空间 COLOR_RGB2GRAY,COLOR_BGR2GRAY,COLOR_RGBA2GRAY,COLOR_BGRA2GRAY

等,仅列举部分。

为什么要转化到灰度值????

因为算法值关注于其中的一种颜色,因此通过二值化讲图像中的其他色彩调成0,通过设置阈值化(Threshold),进行二值图像的处理与分析,首先要把灰度图像二值化,得到二值化图像,这样子有利于再对图像做进一步处理时,图像的集合性质只与像素值为0或255的点的位置有关,不再涉及像素的多级值,使处理变得简单,而且数据的处理和压缩量小。为了得到理想的二值图像,一般采用封闭、连通的边界定义不交叠的区域。所有灰度大于或等于阀值的像素被判定为属于特定物体,其灰度值为255表示,否则这些像素点被排除在物体区域以外,灰度值为0,表示背景或者例外的物体区域。

猜你喜欢

转载自blog.csdn.net/SimileciWH/article/details/85236391