opencv-python图像处理学习随笔:图像和标量ADD相加中的标量和图像通道数相同元素数量理解

☞ ░ 前往老猿Python博文目录

关于图像和标量相加函数add的说明中有如下一段话:

在这里插入图片描述
其中标黄色部分说明图像和标量相加处理时,其中一句英文说明是:

Sum of an array and a scalar when src2 is constructed from Scalar or has the same number of elements as src1.channels()

老猿翻译理解为:
当src2是标量或与src1通道数具有相同数量的元素时(如元组或列表对象),将图像数组和标量相加。

其中针对“与src1通道数具有相同数量的元素”这句话老猿反复进行了测试,发现其实这句说法有问题,无论src1通道数是BGR三通道还是BGRA四通道,实际上在opencv处理时都强制认为是四通道,因此需要相加的列表或元组必须有4个元素。

案例:

>>> import cv2
>>> imgBeauty = cv2.imread(r'F:\pic\beauty.jpg')
>>> img = imgBeauty[0:5, 0:5]
>>> img.shape #结果表明图像是3通道
(5,5,3)
>>> import cv2
>>> import numpy as np
>>> imgBeauty = cv2.imread(r'F:\pic\beauty.jpg')
>>> img = imgBeauty[0:5, 0:5]
>>> mask = np.zeros([5, 5], dtype=np.uint8)
>>> cv2.add(img,(1,1,1,1))
array([[[231, 226, 225],
        [231, 226, 225],
        [231, 226, 225],
        [230, 225, 224],
        [228, 223, 222]],

       [[232, 227, 226],
        [231, 226, 225],
        [231, 226, 225],
        [231, 226, 225],
        [230, 225, 224]],

       [[232, 227, 226],
        [232, 227, 226],
        [232, 227, 226],
        [232, 227, 226],
        [231, 226, 225]],

       [[231, 226, 225],
        [232, 227, 226],
        [232, 227, 226],
        [232, 227, 226],
        [231, 226, 225]],

       [[232, 227, 226],
        [233, 228, 227],
        [232, 227, 226],
        [232, 227, 226],
        [231, 226, 225]]], dtype=uint8)

如果将上面的cv2.add(img,(1,1,1,1))换成cv2.add(img,(1,1,1))则报错。

更多OpenCV-Python的介绍请参考专栏《OpenCV-Python图形图像处理》相关文章。

关于老猿的付费专栏

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

付费专栏文章目录:《moviepy音视频开发专栏文章目录》、《使用PyQt开发图形界面Python应用专栏目录》。

对于缺乏Python基础的同仁,可以通过老猿的免费专栏《专栏:Python基础教程目录》从零开始学习Python。

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

跟老猿学Python、学OpenCV!

☞ ░ 前往老猿Python博文目录
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LaoYuanPython

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值