OpenCV中基本数据结构(2)_Scalar
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相关推荐
- OPENCV中图像数据结构及其转化
OPENCV中图像数据结构及其转化 1. IplImage 它是openCV库中表示图像的结构体. 初始化: cvLoadImage(),cvCreateImage() 访问元素:[行指针] b = ...
- OPENCV中的数据结构总结
最近在写自己的算法,其实就是对一些传统算法的改进.传统算法可以参考opecv的源代码.在阅读源代码的过程中,我慢慢领会到了opencv的强大之处,并不是因为它实现了各种算法,而是在于它对于基本数据结构 ...
- OpenCV中的数据结构
首先介绍2维点对Point_,它的是一个模板类.我们可以直接访问数据成员x,y.它不仅定了+.-.==.!=这4个基本的操作,还定义了点乘.叉乘等操作.特别的这个类还提供了inside函数来判断一个点 ...
- OpenCV中基本数据结构(4)_Rect
Rect数据结构经常是在OpenCV中被用来表示为一个矩形尺寸,其成员包括x,y, width,height,其中x和y分别表示矩形框的左上角的起始点坐标,width和height分别表示宽和高. R ...
- OpenCV中基本数据结构(1)_Point
为了便于对一些常见的数据进行操作,OpenCV定义了一些常见的数据结构(Point ,Scalar等),以方便后续对数据算法的实现,主要分为basic data type.helper objects ...
- OpenCV中基本数据结构(8)_Complex
Complex为OpenCV中的复数表示类,与STL 中的complex类似但是不一样,两者可以互换,与STL的complex最大的不同是,STL中获取到实部和虚部的值 分别使用real()和imag ...
- OpenCV中基本数据结构(6)_Matx
Matx为OpenCV轻量级的矩阵,被称为fixed matrix classes,意思是每个矩阵的大小都是固定的,主要是应对矩阵数据比较小的场景,最新的版本4.0不超过6*6大小的矩阵,旧版本一般不 ...
- OpenCV中基本数据结构(7)_Vec
Vec系列数据结构是Matx的一个派生类,其矩阵的行的大小永远固定为一行,列大小从1到6不等,可以认为类似与C++ vector,但与C++ 的vector又有很大不同,,以下不同来自于一段技术博客, ...
- OpenCV中基本数据结构(5)_RotatedRect
RotatedRect也是表示一个矩形框,但是与Rect不同的是,RotatedRect可以带倾斜角的矩形,如下图所示: RotatedRect结构中包括三个变量: Point2f center:为矩 ...
最新文章
- Kubernetes 必备工具:2021
- Linux SSH远程文件/文件夹传输命令scp
- 【跟着我们学Golang】Go语言全平台安装
- ArangoDB 3.5发布:流事务API、蒙面数据、搜索性能大幅提升、最短路径功能
- 微服务介绍及Asp.net Core实战项目系列之微服务介绍
- UVA----10082 WERTYU【字符串】
- yii 下 session 丢失的问题
- 如何快速地真正的融入IT行业
- 计算机网络网络层之数据报网络
- iBase4J简单应用添加模块
- 解决IDEA中leetcode插件出现中文乱码问题
- 转载:声优 - 野上ゆかな
- 新浪云应用 mysql_云应用开发之新浪SAE读写云端数据库MySQL
- 三种加快计算机启动速度的办法,如何提高开机速度 几种提高开机速度的方法【图文】...
- 芯片级维修学习课程安排
- 零基础搭建Tomcat集群(超详细)
- 梦想CAD控件自定义实体实现
- 云计算与大数据平台课堂作业
- Gobelieve 架构(转载)
- Flutter开发日志——初生牛犊
热门文章
- 数据仓库之电商数仓-- 3.3、电商数据仓库系统(DWT层)
- centos7安装Hive2.3.0
- 《从问题到程序:用Python学编程和计算》——导读
- 常用PHP数组函数总结
- JS的console使用
- 使用IntelliJ IDEA开发SpringMVC网站(五)博客文章管理
- IE与Firefox的CSS兼容大全~~论坛推荐~!!!
- ZZULIOJ 1073:级数求和
- OJ1070: 小汽车的位置(C语言)
- sql设置id自动增长_JDBC进阶(一):批处理与获取自增长列的值