Scalar是一个固定的四维大小的vector,一般是主要用于表示颜色RGBA各个颜色的值,其数据精度为double类型,Scalar类其实是Vec类的一个派生类,是只有1行4列的矩阵,对Vec不清楚的可以了解下https://blog.csdn.net/weixin_42730667/article/details/104121969

Scalar定义

Scalar定义如下:

其实质是通过 Scalar_类来实现的,数据类型为double

Scalar_类

整个Scalar_类相对比较简单如下:

总体使用方法如下:

Method Description
默认构造函数 cv::Scalar s;
带参数构造函数

一个参数:cv::Scalar s1(10);

两个参数:cv::Scalar s1(10,11)

三个参数一般为RGB:cv::Scalar s1(10,11,12)

四个参数RGBA:cv::Scalar s1(10,11,12,13)

copy构造函数

cv::Scalar s1(10)

cv::Scalar s2(s1)

mul(相乘) s1.mul(s2)
all 将所有元素都初始化该值:cv::Scalar s1=Scalar::all(110);
conj 返回:returns (v0, -v1, -v2, -v3)
isReal

如果 v1 == v2 == v3 == 0 返回true

其他返回false

使用用例:

#include <stdio.h>
#include "opencv2/opencv.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"using namespace cv;
using namespace std;void main()
{Scalar s1;cout << "s1=:" << s1<<endl;cout << "s1.isReal=:" << s1.isReal() << endl;Scalar s2(10);cout << "s2=:" << s2 << endl;Scalar s3(10,11);cout << "s3=:" << s3 << endl;Scalar s4(10, 11,12);cout << "s4=:" << s4 << endl;Scalar s5(10, 11, 12,13);cout << "s5=:" << s5 << endl;Scalar s6(s5);cout << "s6=:" << s6 << endl;cout << "s5.mul(s6)=:" << s5.mul(s6) << endl;cout << "s5.conj()=:" << s5.conj() << endl;Scalar s7= Scalar::all(110);cout << "s7::all(110)=:" << s7 << endl;cout << "s7.isReal=:" << s7.isReal() << endl;
}

运行结果:

Scalar_类 operator重构

Scalar_类通过operator重构的操作有:

operator Method
+= template<typename _Tp> static inline
Scalar_<_Tp>& operator += (Scalar_<_Tp>& a, const Scalar_<_Tp>& b)
-= template<typename _Tp> static inline
Scalar_<_Tp>& operator -= (Scalar_<_Tp>& a, const Scalar_<_Tp>& b)
*= template<typename _Tp> static inline
Scalar_<_Tp>& operator *= ( Scalar_<_Tp>& a, _Tp v )
== template<typename _Tp> static inline
bool operator == ( const Scalar_<_Tp>& a, const Scalar_<_Tp>& b )
!= template<typename _Tp> static inline
bool operator != ( const Scalar_<_Tp>& a, const Scalar_<_Tp>& b )
+ template<typename _Tp> static inline
Scalar_<_Tp> operator + (const Scalar_<_Tp>& a, const Scalar_<_Tp>& b)
- template<typename _Tp> static inline
Scalar_<_Tp> operator - (const Scalar_<_Tp>& a, const Scalar_<_Tp>& b)
* template<typename _Tp> static inline
Scalar_<_Tp> operator * (const Scalar_<_Tp>& a, _Tp alpha)
template<typename _Tp> static inline
Scalar_<_Tp> operator * (_Tp alpha, const Scalar_<_Tp>& a)
template<typename _Tp> static inline
Scalar_<_Tp> operator * (const Scalar_<_Tp>& a, const Scalar_<_Tp>& b)
template<typename _Tp> static inline
Scalar operator * (const Matx<_Tp, 4, 4>& a, const Scalar& b)
template<> inline
Scalar operator * (const Matx<double, 4, 4>& a, const Scalar& b)
- template<typename _Tp> static inline
Scalar_<_Tp> operator - (const Scalar_<_Tp>& a)
*= template<typename _Tp> static inline
Scalar_<_Tp>& operator *= (Scalar_<_Tp>& a, const Scalar_<_Tp>& b)
/ template<typename _Tp> static inline
Scalar_<_Tp> operator / (const Scalar_<_Tp>& a, _Tp alpha)
template<typename _Tp> static inline
Scalar_<float> operator / (const Scalar_<float>& a, float alpha)
template<typename _Tp> static inline
Scalar_<double> operator / (const Scalar_<double>& a, double alpha)
template<typename _Tp> static inline
Scalar_<_Tp> operator / (_Tp a, const Scalar_<_Tp>& b)
template<typename _Tp> static inline
Scalar_<_Tp> operator / (const Scalar_<_Tp>& a, const Scalar_<_Tp>& b)
/=
template<typename _Tp> static inline
Scalar_<_Tp>& operator /= (Scalar_<_Tp>& a, _Tp alpha)
template<typename _Tp> static inline
Scalar_<_Tp>& operator /= (Scalar_<_Tp>& a, const Scalar_<_Tp>& b)

OpenCV中基本数据结构(2)_Scalar相关推荐

  1. OPENCV中图像数据结构及其转化

    OPENCV中图像数据结构及其转化 1. IplImage 它是openCV库中表示图像的结构体. 初始化: cvLoadImage(),cvCreateImage() 访问元素:[行指针] b = ...

  2. OPENCV中的数据结构总结

    最近在写自己的算法,其实就是对一些传统算法的改进.传统算法可以参考opecv的源代码.在阅读源代码的过程中,我慢慢领会到了opencv的强大之处,并不是因为它实现了各种算法,而是在于它对于基本数据结构 ...

  3. OpenCV中的数据结构

    首先介绍2维点对Point_,它的是一个模板类.我们可以直接访问数据成员x,y.它不仅定了+.-.==.!=这4个基本的操作,还定义了点乘.叉乘等操作.特别的这个类还提供了inside函数来判断一个点 ...

  4. OpenCV中基本数据结构(4)_Rect

    Rect数据结构经常是在OpenCV中被用来表示为一个矩形尺寸,其成员包括x,y, width,height,其中x和y分别表示矩形框的左上角的起始点坐标,width和height分别表示宽和高. R ...

  5. OpenCV中基本数据结构(1)_Point

    为了便于对一些常见的数据进行操作,OpenCV定义了一些常见的数据结构(Point ,Scalar等),以方便后续对数据算法的实现,主要分为basic data type.helper objects ...

  6. OpenCV中基本数据结构(8)_Complex

    Complex为OpenCV中的复数表示类,与STL 中的complex类似但是不一样,两者可以互换,与STL的complex最大的不同是,STL中获取到实部和虚部的值 分别使用real()和imag ...

  7. OpenCV中基本数据结构(6)_Matx

    Matx为OpenCV轻量级的矩阵,被称为fixed matrix classes,意思是每个矩阵的大小都是固定的,主要是应对矩阵数据比较小的场景,最新的版本4.0不超过6*6大小的矩阵,旧版本一般不 ...

  8. OpenCV中基本数据结构(7)_Vec

    Vec系列数据结构是Matx的一个派生类,其矩阵的行的大小永远固定为一行,列大小从1到6不等,可以认为类似与C++ vector,但与C++ 的vector又有很大不同,,以下不同来自于一段技术博客, ...

  9. OpenCV中基本数据结构(5)_RotatedRect

    RotatedRect也是表示一个矩形框,但是与Rect不同的是,RotatedRect可以带倾斜角的矩形,如下图所示: RotatedRect结构中包括三个变量: Point2f center:为矩 ...

最新文章

  1. Kubernetes 必备工具:2021
  2. Linux SSH远程文件/文件夹传输命令scp
  3. 【跟着我们学Golang】Go语言全平台安装
  4. ArangoDB 3.5发布:流事务API、蒙面数据、搜索性能大幅提升、最短路径功能
  5. 微服务介绍及Asp.net Core实战项目系列之微服务介绍
  6. UVA----10082 WERTYU【字符串】
  7. yii 下 session 丢失的问题
  8. 如何快速地真正的融入IT行业
  9. 计算机网络网络层之数据报网络
  10. iBase4J简单应用添加模块
  11. 解决IDEA中leetcode插件出现中文乱码问题
  12. 转载:声优 - 野上ゆかな
  13. 新浪云应用 mysql_云应用开发之新浪SAE读写云端数据库MySQL
  14. 三种加快计算机启动速度的办法,如何提高开机速度 几种提高开机速度的方法【图文】...
  15. 芯片级维修学习课程安排
  16. 零基础搭建Tomcat集群(超详细)
  17. 梦想CAD控件自定义实体实现
  18. 云计算与大数据平台课堂作业
  19. Gobelieve 架构(转载)
  20. Flutter开发日志——初生牛犊

热门文章

  1. 数据仓库之电商数仓-- 3.3、电商数据仓库系统(DWT层)
  2. centos7安装Hive2.3.0
  3. 《从问题到程序:用Python学编程和计算》——导读
  4. 常用PHP数组函数总结
  5. JS的console使用
  6. 使用IntelliJ IDEA开发SpringMVC网站(五)博客文章管理
  7. IE与Firefox的CSS兼容大全~~论坛推荐~!!!
  8. ZZULIOJ 1073:级数求和
  9. OJ1070: 小汽车的位置(C语言)
  10. sql设置id自动增长_JDBC进阶(一):批处理与获取自增长列的值