博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OpenCV编程中的C++语法知识点回顾
阅读量:4081 次
发布时间:2019-05-25

本文共 2162 字,大约阅读时间需要 7 分钟。

摘自:

 

计算机视觉之OpenCV编程中的C++语法知识点回顾(近期持续更新中)

2019-01-13 21:17:02 阅读数 144

分类专栏:

版权声明:本文为博主原创文章,遵循版权协议,转载请附上原文出处链接和本声明。

本文链接:

1、uchar* previous 和 uchar *previous 两者之间有什么区别?

Answer:在声明一个指针的时候,两者之间没有任何区别,如果同时声明两个指针的时候,就会有区别:                比如  uchar*  a , b ; 和 uchar *a , *b ; 这两者之间是不一样的,前一个是错误的声明,后一个才是                正确的变量声明

2、变量前加const

const 用来声明一个常量的,当你不想一个值被改变时,就可以用const进行声明。

3、char和uchar 的区别

char有符号型型变量,全称为signed char,一般缩写为char,范围是-128~127; uchar在C语言中不存在,会出现语法错误。unsigned char 是无符号型变量范围是 0~255。

4、C++中 :: 的作用意义

1.在类外部声明成员函数:void Point::Area(){};             在这里,Point是指的类名,Area( )是指的类中的成员函数2.调用全局函数;表示引用成员函数变量及作用域,作用域成员运算符           例:System::Math::Sqrt() 相当于System.Math.Sqrt()。3.调用类的静态方法: 如:CDisplay::display()。           把域看作是一个可视窗口全局域的对象在它被定义的整个文件里,一直到文件末尾都是可见的。在一个函数内被定义的对象是          局域的(local scope), 它只在定义其的函数体内可见。每个类维持一个域,在这个域之外 ,它的成员是不可见的。类域操          作符告诉编译器后面的标识符可在该类的范围内被找到。

5、关于指针最简单的 “ * ” 和 " & " 的使用

  • 首先是定义一个指针: int *p ; 明确一点: 指针其实就是指的指针变量,是一个专门用来存放地址的变量。
  • p = &i ; 这句话的意思是: 取i 的地址赋给指针p
上述两种情况综合起来就是: int *p = &i ;
  • " * " 是指针运算符, ” & “ 是取地址运算符
  • 指向空指针: void* p;

6、关于C++ 中调用OpenCV库函数时,定义图像 Mat时,使用 引号( &) 符号的疑问和解析

**首先需要明确一点是,这个问题一般参考书都会归结到 指针 章节里面的 引用 小节  去讲述**

在图像处理中,经常会看到: Mat& image… 和 Mat &image… 这两种情况

1、引用其实是一种隐式指针

int a = 10 ;int & ia = a ;ia = 2;      /// 在这里面,定义一个隐式变量ia,它是变量a的别名。

2、使用引用来传递参数。这种方式在OpenCV图像处理中非常常见

比如下面这个例子:

cv::Mat ColorDetector::process(const cv::Mat& image) {   result.create(image.size(), CV_8UC1);   cv::Mat_
::const_iterator it = image.begin
(); cv::Mat_
::const_iterator itend = image.end
(); cv::Mat_
::iterator itout = result.begin
(); for (; it != itend; it++, itout++) { if (getColorDistance(*it) <= maxDist) { *itout = 255; } else *itout = 0; } return result;}

在这里定义一个函数,在函数的参数里面,通过引用,传入 image ( Mat& image ),通过这样的操作;

当我们在主函数中

result = cdetect.process(image);

调用这样的一个函数的时候, 我们传入的是 image 图像,在 process函数里面引用image图像,所以在process里面对图像进行相应的操作,在主函数中的image图像就会随着进行相应的改变。

3、关于 引用符号的位置的说明

Mat&imageMat[任意个空格]&imageMat&[任意个空格]imageMat[任意个空格]&[任意个空格]image     上述四种情况,在编译器看来都是一样的,这些空格在词法分析之后都被忽略了。所以说写法上比较灵活

文章最后发布于: 2019-01-13 21:17:02

你可能感兴趣的文章
react-native-picker时间选择和城市选择
查看>>
React Native学习之Modal控件自定义弹出View
查看>>
towebp-loader诞生记~ 一个webpack 图片loader
查看>>
Vue.js写一个音乐播放器.A music player by Vue.js
查看>>
React Native 控件之 Modal 详解 - Android/iOS 双平台通用
查看>>
ReactNative学习笔记--基于Modal的多步弹窗的封装
查看>>
ReactNative学习笔记--下拉选择菜单的简单封装
查看>>
滴滴 webapp 5.0 Vue 2.0 重构经验分享
查看>>
React Native学习
查看>>
ReactNative实战系列 组件封装之Dialog(iOS和Android通用)
查看>>
使用React Native 实现自定义Dialog
查看>>
React Native 下拉菜单容器实现
查看>>
React-Native项目实战技术分享
查看>>
React Native 随笔
查看>>
React Native 详细实现热部署、增量差异化热更新
查看>>
vue仿163musicPC端
查看>>
vue仿PC端163music图片滚动组件
查看>>
好用的ReactNative下拉刷新上拉加载的组件,支持iOS和Android
查看>>
React Native高手进阶
查看>>
React Native应用部署/热更新-CodePush最新集成总结(新)
查看>>