昊虹AI笔记网

 找回密码
 立即注册
搜索
查看: 977|回复: 0
收起左侧

OpenCV的Scalar对象怎样初始化,如何取分量值,如何与标量相乘?

[复制链接]

239

主题

241

帖子

926

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
926
昊虹君 发表于 2022-11-18 14:40 | 显示全部楼层 |阅读模式
OpenCV的Scalar对象怎样初始化,如何取分量值,如何与标量相乘?

OpenCV的Scalar对象是一个存储标量的容器,
它里面可以存储四个标量值,
每个标量值的类型为double类型。

如下图所示:

通常用它来存储多通道矩阵的标量计算结果,比如存储图像每个通道的像素均值。

本文介绍OpenCV的Scalar对象怎样初始化,如何取分量值,如何与标量相乘。

目录
  • 01-Scalar对象的初始化
  • 02-Scalar对象如何取分量值
  • 03-Scalar对象如何与标量相乘?

01-Scalar对象的初始化
初始化可以带值,也可以不带值,不带值的话默认为0。
两种方法的示例代码如下:
[C++] 纯文本查看 复制代码
//出处:昊虹AI笔记网(hhai.cc)
//用心记录计算机视觉和AI技术

//博主微信/QQ 2487872782
//QQ群 271891601
//欢迎技术交流与咨询

//OpenCV版本 OpenCV3.0

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;
using namespace cv;

int main()
{
	cv::Scalar A1;
	cout << "A1" << A1 << endl << endl;

	cv::Scalar C1 = { 55, 66, 77, 88 };
	cout << "C1" << C1 << endl << endl;


}

在上面的代码中 A1是不带值的初始化对象,C1是带值的初始化对象。
运行结果如下图所示:


02-Scalar对象如何取分量值
Scalar对象取分量值的方法很简单。
用运算符“[ ]”和“索引”即可实现。

问:怎么发现可以这样操作的?
很简单,通过类的成员函数提示找到的,如下图所示:


示例代码很简单,如下:
[C++] 纯文本查看 复制代码
//出处:昊虹AI笔记网(hhai.cc)
//用心记录计算机视觉和AI技术

//博主微信/QQ 2487872782
//QQ群 271891601
//欢迎技术交流与咨询

//OpenCV版本 OpenCV3.0

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;
using namespace cv;

int main()
{
	cv::Scalar A1;
	A1[0] = 10;
	A1[1] = 11;
	A1[2] = 12;
	A1[3] = 13;

	cout << "A1" << A1 << endl<<endl;

	double b0 = A1[0];
	double b1 = A1[1];
	double b2 = A1[2];
	double b3 = A1[3];

	cout << "b0:" << b0 << endl;
	cout << "b1:" << b1 << endl;
	cout << "b2:" << b2 << endl;
	cout << "b3:" << b3 << endl;

}

运行结果如下:


03-Scalar对象如何与标量相乘?
用运算符“*”即可实现Scalar对象与标量相乘。
示例代码如下:
[C++] 纯文本查看 复制代码
//出处:昊虹AI笔记网(hhai.cc)
//用心记录计算机视觉和AI技术

//博主微信/QQ 2487872782
//QQ群 271891601
//欢迎技术交流与咨询

//OpenCV版本 OpenCV3.0

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;
using namespace cv;

int main()
{
	cv::Scalar A1 = { 2, 3, 4, 5 };
	cout << "A1" << A1 << endl << endl;

	cv::Scalar B1 = 2 * A1;

	cout << "B1的值为:" << B1 << endl;
}

运行结果如下:


虽然Scalar对象可以与标量相乘,但是还是不建议大家让Scalar对象参与运算,原因见下面这个链接:
https://www.hhai.cc/thread-147-1-1.html
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|昊虹AI笔记网 ( 蜀ICP备2022024117号-1 )

GMT+8, 2024-4-29 17:58 , Processed in 0.025800 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表