OpenCV-Python中的标量Scalar是什么

☞ ░ 前往老猿Python博客 https://blog.csdn.net/LaoYuanPython

一、标量的常规含义

  • 在百度百科中标量是这样定义的:
    标量(scalar),亦称“无向量”。有些物理量,只具有数值大小,而没有方向,部分有正负之分。物理学中,标量(或作纯量)指在坐标变换下保持不变的物理量。用通俗的说法,标量是只有大小,没有方向的量。
  • 在矩阵处理相关程序开发中,标量常被认为就是一个单独的数值,请参考《标量,向量,矩阵与张量

二、OpenCV-Python中遇到的问题

老猿也认为标量就是一个数值,因此在进行OpenCV图像运算的学习过程中,在看到类似加法运算中OpenCV帮助文档这样描述:“Sum of a scalar and an array when src1 is constructed from Scalar or has the same number of elements as src2.channels()”)时很难理解。

当时在CSDN专栏群里咨询,结果也没有人告知一个所以然,但讨论中某位大拿以src2.channels来说应该是四元组,一验证居然真的是对的,但当时测试图像是BGR三通道的,怎么是四元组呢?想了半天只能认为是OpenCV图像框架处理是要考虑最复杂的图像来理解,因此在《OpenCV-Python图像的加法运算cv2.add函数详解》博文中,老猿这样介绍:“这点老猿没有理解,做了相关测试(如针对三通道的图像,标量用一个三元组或三个元素的列表代替)行不通,经与CSDN部分专家讨论及验证测试,发现换成一个四元组可以”、“个人认为这是因为OpenCV强制对彩色图像处理是四通道的”,但其实与这个英语解释是对不上的。

三、让人启发的两篇博文

今天因机缘之下,查阅了如下两篇博文,终于找到了这个问题的答案。首先将这两篇博文在此列出:

  1. OpenCV学习笔记(3)——Scalar数据类型理解
    在这里插入图片描述

  2. opencv-python与c++ opencv中的一些区别和基础的知识
    在这里插入图片描述

四、结论

  1. 在c++中,OpenCV中的标量是一个包含四个数字类型元素的特殊结构体,其类型为Scalar,在其构造函数中输入该标量要包含的值,当输入数量少于4个元素时,系统缺省补0
  2. 在Python中标量为4个数字类型元素的元组,当输入少于4个元素时,以0补齐,特别地如果标量只需要使用第一个元素时,可以直接以一个常数或简单类型的数值化变量作为标量,这称为从数值构造标量,系统自动转换为4元组;
  3. 经老猿验证, 在图像运算时,对标量的元素数量会有不同要求,例如加减乘除中要求标量是单一数值或完整的四元组,在位运算中可以是单一数值、三元组或完整的四元组。

更多OpenCV-Python介绍请参考专栏《OpenCV-Python图形图像处理 》
专栏网址https://blog.csdn.net/laoyuanpython/category_9979286.html

关于老猿的付费专栏

老猿的付费专栏《使用PyQt开发图形界面Python应用 》(https://blog.csdn.net/laoyuanpython/category_9607725.html)专门介绍基于Python的PyQt图形界面开发基础教程,付费专栏《moviepy音视频开发专栏》 (https://blog.csdn.net/laoyuanpython/category_10232926.html)详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,两个专栏都适合有一定Python基础但无相关知识的小白读者学习。

付费专栏文章目录:《moviepy音视频开发专栏文章目录》(https://blog.csdn.net/LaoYuanPython/article/details/107574583)、《使用PyQt开发图形界面Python应用专栏目录 》(https://blog.csdn.net/LaoYuanPython/article/details/107580932)。

对于缺乏Python基础的同仁,可以通过老猿的免费专栏《专栏:Python基础教程目录》(https://blog.csdn.net/laoyuanpython/category_9831699.html)从零开始学习Python。

如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。

跟老猿学Python、学OpenCV!

☞ ░ 前往老猿Python博文目录 https://blog.csdn.net/LaoYuanPython

猜你喜欢

转载自blog.csdn.net/LaoYuanPython/article/details/109161751