OpenCV-Python图像乘法运算cv2.multiply函数详解及像素值溢出归一化处理

【OpenCV】CUDA模块2:矩阵multiply/subtract/add运算 在这个示例中,cv::cuda::multiply 函数接受两个输入图像 gpu_img1 和 gpu_img2,并生成一个输出图像 gpu_result,其中包含两个输入图像的逐元素乘积。函数的基本用法是将两个相同大小和类型的 cv::cuda::GpuMat 对象作为输入,并输出一个包含逐元素乘法结果的新 cv::cuda::GpuMat 对象。4:增强对比度:在某些情况下,通过从一个图像中减去另一个图像(可能是模糊版本或低通滤波后的图像),可以增强图像的对比度,特别是边缘和细节部分。 阅读详情
AI摘要

本文深入探讨OpenCV中图像乘法运算cv2.multiply函数的使用方法,包括图像与标量相乘调节亮度、图像与掩膜相乘控制输出范围、图像自乘调节对比度等内容。

☞ ░ 前往老猿Python博客░ https://blog.youkuaiyun.com/LaoYuanPython

一、引言

在《OpenCV-Python图像的加法运算cv2.add函数详解》及《OpenCV-Python图像的减法运算cv2.subtract函数详解以及和矩阵减法的差异对比》详细介绍了图像的加法运算和减法运算,有加减法就有乘除法,本文介绍图像的乘法运算。

图像的乘法有三种,具体参考《对OpenCV中3种乘法操作的理解掌握》,我们在此只关注最后一种,也即cv2.multiply函数提供的乘法。对于两个图像矩阵A、B来说:
在这里插入图片描述
该种方式的乘法计算方法如下:
在这里插入图片描述

二、图像乘法cv2.multiply的语法

调用语法:

multiply(src1, src2, dst=None, scale=None, dtype=None)

参数说明:

OpenCV手册介绍的乘法相关语法内容解读如下:

  1. src1:作为被乘数的图像数组
  2. src2:作为乘数的图像数组,大小和类型与src1相同
  3. dst:可选参数,输出结果保存的变量,默认值为None,如果为非None,输出图像保存到dst对应实参中,其大小和通道数与输入图像相同,图像的深度(即图像像素的位数)由dtype参数或输入图像确定
  4. scale:可选的结果图像缩放因子,即在src1*src2的基础上再乘scale
  5. mask:图像掩膜,可选参数,为8位单通道的灰度图像,用于指定要更改的输出图像数组的元素,即输出图像像素只有mask对应位置元素不为0的部分才输出,否则该位置像素的所有通道分量都设置为0
  6. dtype:可选参数,输出图像数组的深度,即图像单个像素值的位数(如RGB用三个字节表示,则为24位)。
  7. 返回值:相乘的结果图像

三、图像乘法cv2.multiply的使用场景

关于src1和src2这两个输入数据上,OpenCV帮助文档中乘法和加法、减法的说明不一样,加法和减法中可以使用标量,而在乘法中说明是二者必须大小和类型相同,没有说可以使用标量。我们参考加减法的模式来进行验证说明。

本部分处理案例的源图像使用图片imgs.jpg是一张多个OpenCV处理经典图像的合集,图像如下:
在这里插入图片描述
由于图像比较大不好截图,因此后面读取图像时将其强制调整为1000*750.

3.1、src2为标量的情况

以一副图像和一个标量相乘来观察,代码如下:

import numpy as np
import cv2
def  main():
    img = cv2.resize(cv2.imread(r'F:\pic\imgs.jpg'),(1000,750))
    imgMultiply = cv2.multiply(img,1.2)
    cv2.imshow('img', img)
    cv2.imshow('imgMultiply', imgMultiply)
    cv2.waitKey(0)

main()

我们通过程序调试来观察相乘的结果,在显示图片前设置断点,观看相关变量数据,如图:
在这里插入图片描述
从上述标黄色部分的矩阵通道值可以看出,直接用一个常数标量相乘后,原图像矩阵的像素后2个通道值在结果图像中全部为0。继续运行显示图像如下:
在这里插入图片描述
可以看到图像为蓝色,与上面三通道只留了第一个通道蓝色通道的数据的一致。

3.2、src2为一个四元组

在前面介绍加减法时说明了OpenCV在对标量运算时转为了四元组进行运算,因此在此我们将上面案例的标量改为四元组再验证。代码如下:

def  main():
    img = cv2.resize(cv2.imread(r'F:\pic\imgs.jpg'),(1000,750))
    imgMultiply = cv2.multiply(img,(1.5,1.5,1.5,1.5))
    cv2.imshow('img', img)
    cv2.imshow('imgMultiply', imgMultiply)
    cv2.waitKey(0)

main()

经跟踪观察,所有像素通道分量都乘以了1.5,超过255的按饱和运算模式置为255.显示图像如下:

在这里插入图片描述
上图跟原图对比,亮度明显增强。实际上当src2设置为一个元素值相等的四元组时,其效果等同于设置为四个元素为1的四元组和图像设置缩放因子为该元素值的情况。我们将上述代码调整为如下:

def  main():
    img = cv2.resize(cv2.imread(r'F:\pic\imgs.jpg'),(1000,750))
    imgMultiply = cv2.multiply(img,(1,1,1,1),scale=0.5)
    cv2.imshow('img', img)
    cv2.imshow('imgMultiply', imgMultiply)
    cv2.waitKey(0)

main()

注意:缩放因子之前还有个可选参数dst,因此需要用关键字参数形式。
对应结果图像如下:
在这里插入图片描述
可以看到图像亮度明显变暗,但对比度没有变化。

综合3.1和3.2验证的情况(老猿的验证环境为OpenCV-Python4.3.0.36,windows版本),src2可以是一个四元组,当我们想使用multiply调整图像亮度时,可以使用src2为一个四元组,该四元组的所有元素值即为要调整的亮度因子,也可以使用元素全为1的四元组叠加scale调整因子的情况来实现。但这2种形式在OpenCV帮助文档中没有说明,因此虽然现在可行但老猿不建议使用。如果要直接调整图像的亮度,建议直接进行矩阵和标量的算术乘法即可,只是需要注意要采用饱和运算模式。

3.3、彩色图像数组和掩膜图像数组相乘

使用如下代码进行彩色图像和掩膜图像的乘法运算:

def  main():
    img = cv2.resize(cv2.imread(r'F:\pic\imgs.jpg'),(1000,750))
    mask = np.ones(img.shape[:2],np.uint8)
    mask[100:200,100:200] = 0
    imgMultiply = cv2.multiply(img,mask,scale=0.5)

    cv2.imshow('img', img)
    cv2.imshow('imgMultiply', imgMultiply)
    cv2.waitKey(0)

main()

执行时报错:

"C:\Program Files\Python38\python.exe" F:/study/python/project/cvtest/cvtest.py
Traceback (most recent call last):
  File "F:/study/python/project/cvtest/cvtest.py", line 100, in <module>
    main()
  File "F:/study/python/project/cvtest/cvtest.py", line 94, in main
    imgMultiply = cv2.multiply(img,mask,scale=0.5)
cv2.error: OpenCV(4.3.0) C:\projects\opencv-python\opencv\modules\core\src\arithm.cpp:669: error: (-209:Sizes of input arguments do not match) The operation is neither 'array op array' (where arrays have the same size and the same number of channels), nor 'array op scalar', nor 'scalar op array' in function 'cv::arithm_op'

可见不能这样操作。

3.4、彩色图像数组和彩色图像数组相乘

我们使用如下代码构建两个彩色图像数组的乘法运算,其中的第二个图像是基于原图像同样大小和通道数的矩阵图像,其元素取值只有0和1:

def  main():
    img = cv2.resize(cv2.imread(r'F:\pic\imgs.jpg'),(1000,750))
    mask = np.ones(img.shape,np.uint8)
    mask[500:650,10:300] = 0
    imgMultiply = cv2.multiply(img,mask,scale=0.8)

    cv2.imshow('img', img)
    cv2.imshow('imgMultiply', imgMultiply)
    cv2.waitKey(0)

main()

执行后结果图像截图:
在这里插入图片描述
可以看到左下角图片部分被黑色替代,如果想使用白色替代,将mask设置为0的通道调整为一个比较大的值使得相乘时饱和运算后值为255即可。如:

def  main():
    img = cv2.resize(cv2.imread(r'F:\pic\imgs.jpg'),(1000,750))
    mask = np.ones(img.shape,np.uint8)
    mask[500:650,10:300] = 100
    imgMultiply = cv2.multiply(img,mask,scale=0.8)

    cv2.imshow('img', img)
    cv2.imshow('imgMultiply', imgMultiply)
    cv2.waitKey(0)

main()

执行结果截图:
在这里插入图片描述
可以看到,通过这样的两个图像相乘,可以决定结果图像哪些部分保留哪些部分清除。

3.5、彩色图像饱和运算乘

如果两副图像相乘甚至是一副图像自乘,由于图像自身像素通道值一般大于为0或大于1的数,而图像运算是饱和运算,就会导致两副图像任意一副为黑色的部分在结果图像中都为黑色,而其他部分通道值大部分都会大幅增长甚至达到饱和。

上面原图自乘的代码如下:

def  main():
    img = cv2.resize(cv2.imread(r'F:\pic\imgs.jpg'),(1000,750))
    imgMultiply = cv2.multiply(img,img)

    cv2.imshow('img', img)
    cv2.imshow('imgMultiply', imgMultiply)
    cv2.waitKey(0)

main()

自乘之后的结果图像如下:
在这里插入图片描述
所以这种真正的两副图像相乘在低级图像处理来说基本没有意义,中高级图像处理方面老猿没有研究不清楚是否有特殊用途。

3.6、彩色图像乘积的溢出处理
3.6.1、溢出的解决方式

图像的单个通道值用一个无符号字节(numpy.uint8)表示,其值范围在0-255之内,如果图像像素通道值超出范围时,OpenCV的饱和运算机制会将小于0的通道值置为0,大于255的置为255。但这种机制在某些情况下会导致图像像素通道值大范围的被置为255或0。例如从上面3.4可以看到真正两个图像的乘积由于饱和元素导致图像大范围白化。

为了解决这个问题,可以采用如下方法处理:

  1. 乘法时,将图像乘积结果保存到通道值uint16或float32的矩阵中(由于float32可以保存小数,因此老猿建议为float32),这可能有2种方式,一种是将原输入图像矩阵在执行乘运算前将其转为float32矩阵,二是原输入图像矩阵保持不变,将乘积保存到float32图像矩阵,但老猿目前没有在OpenCV-Python中找到第二种方式的实现,只验证通过了先将输入图像转为float32的方式;
  2. 执行乘法的乘积矩阵进行归一化处理。关于归一化处理请参考《opencv中归一化函数normalize()的原理讲解》。
3.6.2、归一化处理的算法考虑

使用OpenCV-Python的normalize函数的NORM_MINMAX模式将矩阵元素值归到[0,255]区间范围内时,OpenCV采用的算法是:
在这里插入图片描述

这个算法的思想是将原矩阵中最大元素值映射为区间的上限如255,将原矩阵中最小元素值映射为区间的下限如0,其他中间值映射为该值与矩阵中最小元素值的差与原矩阵中最大最小元素值差的比例乘以映射区间的乘积再加上映射区间下限值,即映射过程的线性变换是以原元素值与原矩阵最小值的差异值作为线性变换的,而不是直接以元素值作为线性变换的。

从算法上来说,这种方式比较科学,但老猿认为图像处理的情况比较特殊,如果一副图像全部是由深色图像构成,所有像素的每个通道值都比较大,就会导致图像的乘积归一化到[0-255]之间时差异会很小,并且图像单通道都在[0-255]之间,因此两个图像的乘积特别是自乘的乘积理论上以0作为下限来考虑进行归一化处理可能在特定场景下更合理,当然在其他归一化场景下(如图像加法)可能OpenCV采用的NORM_MINMAX模式更合理。

3.6.3、图像自乘及归一化处理案例

针对OpenCV-Python的归一化和老猿考虑的归一化两种算法我们来实现图片imgs.jpg的图像自乘之后的归一化效果对比。对应代码如下:

def main():
    img = cv2.imread(r'F:\pic\imgs.jpg')
    img32 = img.astype(np.float32)

    imgMultiply = cv2.multiply(img32, img32)

    imgNormalizeOpenCV = cv2.normalize(imgMultiply,None,0,255,cv2.NORM_MINMAX) #opencv归一化处理

    #老猿的归一化处理
    maxv = np.max(imgMultiply)
    imgNormalizeLaoyuan = (imgMultiply / maxv) * 255

    cv2.imshow('imgNormalizeOpenCV', imgNormalizeOpenCV.astype(np.uint8))
    cv2.imshow('imgNormalizeLaoyuan', imgNormalizeLaoyuan.astype(np.uint8))

    cv2.waitKey(0)


main()

我们将原图、两种归一化处理的图竖直叠加在一起对比一下看看图像自乘再归一化处理的效果。下面图片中第一行图片是原图的,第二行是OpenCV归一化处理的,第三行是老猿的归一化方式处理。
在这里插入图片描述
从上面图片对照可以看出,自乘归一化处理后图像的对比度增大,这是因为自乘后放大了差异,归一化处理不会改变这种变化趋势。同时可以看到两种归一化处理图像效果差不多,老猿没有仔细分析数据,想来也差不多,这是因为imgs.jpg这幅图像黑色和白色都存在,导致这两种算法处理时实际结果应该基本相同。

四、小结:

本文详细介绍了OpenCV-Python图像乘法运算cv2.multiply函数的调用语法,并分析了OpenCV乘法的几种使用场景以及图像溢出的归一化处理,通过这些分析可以知道OpenCV图像的乘法运算主要有三种作用:

  1. 图像和标量的乘法可以调节图像的明暗度;
  2. 图像和掩膜的乘法可以控制输出图像的范围;
  3. 图像自乘可以调节图像的对比度。

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

博文地址:https://blog.youkuaiyun.com/laoyuanpython/category_9979286.html

关于老猿的付费专栏

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

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

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

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

跟老猿学Python、学OpenCV!

☞ ░ 前往老猿Python博文目录 https://blog.youkuaiyun.com/LaoYuanPython ░
OpenCV图像算术运算实战:从基础到高级应用 图像处理中的算术运算是计算机视觉的基础操作,通过加减乘除等基本运算实现高级功能。在OpenCV中,图像以数值矩阵形式存储,每个像素点对应特定数值,这使得数学运算成为可能。理解数值范围溢出和尺寸匹配等核心约束是关键。算术运算技术广泛应用于图像增强、噪声消除、运动检测等场景,例如通过多帧平均法提升信噪比,或利用减法运算实现背景消除。在工业质检、医疗影像等领域,合理运用这些基础操作能解决90%的预处理问题。掌握OpenCV中的cv2.add()、cv2.subtract()等函数,以及addWeighted混合技 阅读详情

相关推荐

用Python+OpenCV实现overlay相机效果:图像叠加与混合模式详解

在图像处理领域,overlay是一种常见的图层混合技术,通过Alpha通道控制前景与背景的融合程度,并配合正片叠底、滤色、叠加等混合模式,可以模拟出复古相机、漏光、噪点等视觉效果。其核心原理是基于像素级颜色运算,即根据透明度权重对底图和前景图进行线性插值。掌握这一技术后,开发者可以利用OpenCV等工具实现高效的批处理图像增强,自动添加水印、日期戳或风格化滤镜,替代手动PS操作,广泛应用于电商运营、内容生产和实时渲染场景。本文从基础图像叠加公式出发,结合Python与OpenCV示例代码,演示了如何构建一个

weixin_34396103的博客 397

OpenCV-Python教程:图像的乘法运算(multiply)

原文链接:http://www.juzicode.com/archives/6052 返回Opencv-Python教程 1、图像乘法multiply() multiply()用法: dst=cv2.multiply(src1, src2[, dst[, scale[, dtype]]]),src1和src2为图像对象,可选参数scale为放大倍数。结果dst=saturate(scale*src1*src2) multiply()遵循饱和运算规则,比如uint8类型的数据如果超过255会被截断到

桔子code 的博客 5909

H100深度学习流水线全链路优化:从存储到FP8计算

深度学习训练效率的本质,是数据在CPU、内存、PCIe、GPU显存与计算单元之间物理流动的协同问题。当硬件升级至H100,3TB/s显存带宽与FP8张量核心带来巨大潜力,但也暴露出传统DataLoader、PIL图像处理、默认混合精度等方案的严重失配——它们无法满足高吞吐、低延迟、内存布局敏感、硬件加速触发等硬性约束。真正有效的优化必须覆盖存储层(WebDataset+ZSTD)、数据加载层(torchdata+numba JIT)、计算层(torch.compile+transformer_engine+

weixin_30307921的博客 448

Opencv基础入门笔记05

Opencv基础入门笔记05:addWeight与multiply 函数简介。 1.addWeighted 它这个函数能实现图像线性混合效果,就像是PPT的动画效果那样,两层图像融合在一起,注意叠加混合和线性混合是不同的线性混合是将两幅图融合在一起,朦朦胧胧那种 用到的数学公式: 其中,a为比例系数;f0(x),f1(x)为输入的两张图片对应的像素值。 两张图片的大小,类型,深度必须一致。 CV...

LH is programming hard 661

OpenCV-Python图像乘法运算:cv2.multiply函数详解及像素值溢出归一化处理

图像处理是计算机视觉中的重要任务之一,而乘法运算是图像处理中常用的操作之一。在OpenCV-Python中,cv2.multiply函数提供了图像乘法运算的功能。通过合适的像素值归一化处理,我们可以处理像素值溢出的问题,得到正确的乘法运算结果。然而,需要注意的是,图像乘法运算可能导致像素值溢出的问题。在这个示例中,我们将输入图像除以255进行归一化处理,然后再进行乘法运算。这样可以确保乘法结果的像素值在0到1之间,避免了溢出的问题。通过以上代码,我们可以将乘法运算的结果保存为一幅图像,并显示出来。

HackNebulaZ的博客 894

3-OpenCVSharp —- Cv2.Multiply()函数功能(图像乘法)详解

函数在 OpenCVSharp 中用于执行图像或矩阵的逐元素乘法操作。图像与图像的逐元素乘法。图像与常数的逐元素乘法。使用scale参数对结果进行缩放。使用dtype参数控制输出图像的数据类型。这种乘法操作在图像处理领域中非常有用,尤其是在亮度调整、对比度增强、图像融合等任务中。

weixin_45590420的博客 946

python统计图像像素值低于某一个数的个数_OpenCV-Python图像乘法运算cv2.multiply函数详解及像素值溢出归一化处理...

一、引言图像的乘法有三种,具体参考《对OpenCV中3种乘法操作的理解掌握》,我们在此只关注最后一种,也即cv2.multiply函数提供的乘法。对于两个图像矩阵A、B来说:该种方式的乘法计算方法如下: 二、图像乘法cv2.multiply的语法调用语法:multiply(src1, src2, dst=None, scale=None, dtype=None)参数说明:OpenCV手册介绍的乘法...

weixin_39775872的博客 847

OpenCV-Python图像乘法运算详解及像素值归一化处理

OpenCV-Python图像乘法运算详解及像素值归一化处理在图像处理中,图像乘法运算是一种常见的操作。它可以用来调节图像的亮度、对比度等。本文将通过Python中的OpenCV库来详细介绍图像乘法运算中的cv2.multiply函数,并且给出像素值溢出归一化处理的方法。cv2.multiply函数中,第一个参数src1为图像矩阵,第二个参数src2为标量或者与src1同样大小的矩阵,第三个参数dst为输出矩阵。当src2为标量时,矩阵内的每一个像素都会乘以这个标量得到输出矩阵;当src2为矩阵时,两个矩阵

与其临渊羡鱼,不如退而结网 952

图像算术运算原理与安全实践:OpenCV加减乘除的像素级控制

数字图像算术运算是像素级视觉处理的基础能力,其本质是基于数据类型契约(如uint8/float32)的确定性数值操作,而非通用数学计算。理解加法的光能量叠加语义、减法的差异探测机制、乘法的掩膜筛选逻辑与除法的光照归一化作用,是实现图像融合、运动检测、ROI提取和文档校正等任务的前提。关键挑战在于数值溢出、类型不匹配、通道错位及边界截断,需依托cv2.add/subtract/multiply/divide等安全函数或显式dtype转换与裁剪(如np.clip)来保障视觉保真。本文聚焦Python工程实践,覆

weixin_33826609的博客 359

SVD图像压缩原理与Python实战:像素级能量重分配

图像压缩本质是信息能量的结构化保留与冗余剔除。SVD(奇异值分解)作为一种严格的矩阵分解方法,将图像视为二维矩阵,通过分解为左/右奇异向量与奇异值,实现按能量贡献度分层表示——奇异值平方即对应各主成分的能量权重。相比传统JPEG的频域量化或PCA对向量化的强依赖,SVD天然适配图像空间结构,避免协方差矩阵爆炸与局部性破坏,具备无块效应、跨平台一致、算法可解释等工程优势。其核心参数k直接控制重建秩与压缩率,在医学影像预处理、遥感图快速预览、嵌入式轻量推理等场景中,成为兼顾精度、可控性与部署简洁性的关键技术路径

weixin_34392435的博客 1177

FPGA车牌识别实战:从传感器到串口输出的完整硬件流水线

FPGA车牌识别并非单纯算法移植,而是面向实时图像处理的硬件系统工程。其核心在于理解CMOS传感器协议(如DVP、MIPI)、像素级流水线设计、资源受限下的CNN量化部署,以及跨时钟域同步与AXI Stream数据流控制等底层原理。技术价值体现在低延迟(<33ms/帧)、高可靠性(工业级连续运行)和确定性时序上,广泛应用于智能停车、高速稽查、无人值守道闸等边缘视觉场景。本文聚焦FPGA原生开发范式,详解图像采集、预处理、定位分割、字符识别及系统集成全链路,覆盖OV5640传感器驱动、状态机替代OpenCV、

weixin_34174322的博客 510

OpenCV图像像素操作:从基础到实战应用

图像处理是计算机视觉的基础,而像素操作则是图像处理的核心技术。数字图像本质上是由像素组成的二维矩阵,每个像素包含颜色或灰度信息。通过直接访问和修改这些像素值,可以实现各种图像处理效果。在OpenCV中,图像被存储为NumPy数组,支持高效的像素级操作,包括单像素访问、区域像素修改以及条件像素处理等。这些技术在图像预处理、特征提取、ROI处理等场景中广泛应用。合理使用NumPy的向量化操作和OpenCV优化函数可以显著提升像素操作效率,特别是在处理大尺寸图像或视频流时。掌握像素操作不仅有助于理解传统图像处理算

weixin_30588675的博客 408

SIMetrix教程-001.SIMetrix软件简介与安装

  由于某些原因需要用到SIMetrix仿真软件,然而网上的资料并不是特别多,故在此记录一下这款仿真软件的学习过程,也给有需要的人提供一些参考,免走弯路。如果使用过Pspice或者LTspice软件,学习SIMetrix会很容易入门,仿真软件都是大同小异的,会一样后都可以快速入门其他软件。   SIMetrix是一款以SPICE模型为基础的仿真软件,集成了SIMetrix和SIMPLIS两款内核,为工程师提供了可靠的、易于使用的、并完美结合了速度与精度的电路仿真方式。官方的话不多说,和LTspice一样,优

gaoyong_wang的博客 2万+

【持续更新】Python和C++下OpenCV使用小记

OpenCV —— Open Source Computer Vision 使用示例: 导入OpenCV import cv2 读取图片与写图片 pic = cv2.imread(pic_path) cv2.imwrite(pic_path, pic) 调整尺寸 pic2 = cv2.resize(pic, (250, 250), interpolation=cv2.INTER_CUBIC) 多通道合成图片 import numpy as np b_channel = np.ones.

TracelessLe的专栏 827

Verilog的综合指令

Synopsys综合指令

烟花一时的博客 5445

Palantir如何利用Ontology构建企业级数据地图

Palantir通过"本体论"(Ontology)技术构建动态数据地图,将多源异构数据转化为可操作的业务知识网络。该技术突破传统ETL模式,建立覆盖全组织的语义层,将原始数据映射为"客户""订单"等业务对象及其关联关系,形成可推理的语义网络。核心Foundry平台提供本体管理工具(OMA)和开发套件(OSDK),支持从数据连接到应用开发的全流程。虽然采用专有实现而非标准本体语言,但该架构成功解决了数据孤岛问题,赋能复杂决策分析

Learning 1793

OpenCV(Python 版)

计算机中的图像本质上是由无数像素组成的网格,彩色图像通常通过红(R)、绿(G)、蓝(B)三个独立的颜色通道来记录信息,每个通道都是一个二维数字矩阵,矩阵中的数值代表对应位置像素该颜色的亮度(通常为 0-255),三个通道的数值组合决定了像素最终呈现的颜色,计算机存储的就是这些通道矩阵数据,以及图像的宽、高、通道数等元信息。

qq_32381773的博客 408

S7-200 SMART PLC 数字量阀门控制功能块(FB)汇总

S7-200 SMART PLC功能块的各种写法可以查看专栏的其它文章,链接地址如下:S7-200 SMART PLC 子程序功能块(阀门控制)_RXXW_Dor的博客-优快云博客_plc控制阀门开关程序由于S7-200 SMARTPLC的子程序种种功能、容量限制,有时想实现多次调用的子程序可能并不是太容易,这篇博客还是给出一些推荐写法,供大家参看。

RXXW_Dor的博客 3999

Windows下Java集成OpenCV开发环境搭建与实战指南

计算机视觉作为人工智能的重要分支,其核心在于通过算法让机器“看懂”图像与视频。OpenCV作为业界广泛使用的开源计算机视觉库,提供了超过2500个优化算法,涵盖了从基础图像处理到高级机器学习模型部署的全套功能。其技术价值在于为开发者提供了统一、高效的跨平台视觉解决方案,极大地降低了计算机视觉应用的开发门槛。在工业质检、安防监控、医疗影像分析等应用场景中,OpenCV都发挥着关键作用。对于Java开发者而言,在Windows平台上集成OpenCV能够实现技术栈的统一,避免引入复杂的多语言架构。本文聚焦于**环

weixin_30920513的博客 325

化工设备应力分析软件:STAAD.Pro二次开发_(24).非线性分析技术

在STAAD.Pro 中,可以通过命令。

kkchenjj的博客 661

刚体转动欧拉方程:从理论到卫星姿态控制的实践

刚体转动欧拉方程是描述刚体旋转运动的基本动力学方程,在卫星姿态控制、机器人学、航空航天等领域有着广泛应用。本文将详细讲解欧拉方程的物理概念、数学推导、数值计算方法,并重点分析其在卫星姿态控制系统中的具体应用。

ScilogyHunter的博客 642

imgaug 标准化的 LUT 查找表方法:apply_lut 与 apply_lut_ 的原理、用法与全局重构

本文讲解 imgaug 0.4.0 引入的一对标准化查找表(Lookup Table, LUT)映射 API:`imgaug.imgaug.apply_lut()` 及其原地版本 `apply_lut_()`。它们把"用一张 256 项映射表把 `uint8` 图像的每个像素值映射为新值"这一高频操作收敛为唯一的公共入口,并被全部增强器统一采用。读完本文,你将掌握 LUT 表的四种合法形态、`ap

gitblog_00266的博客 215

ABAP 平台注册 OAuth 2.0 Client 的完整实践指南(覆盖 Authorization Code、SAML Bearer 与 PKCE)

本文详述了在ABAP平台上注册入站OAuth 2.0 Client的关键技术和操作要点。文章面向SAP技术人员,系统梳理了前置条件(TLS/SSL、技术用户、授权对象)、配置路径(SOAUTH2事务)、授权类型差异(授权码、SAML Bearer、PKCE)等重要内容。特别强调入站与出站配置的区别,并提供了保密客户端和公有客户端的配置指引。文中所有事务码和参数均参考SAP官方文档,包含多个实用案例和权限配置建议,为ABAP系统作为OAuth 2.0授权服务器的实施提供全面指导。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 297

NumPy数组思维实战:绕过axis和广播陷阱的工程指南

NumPy的核心并非语法记忆,而是从Python标量循环到内存连续数组的‘向量化思维’跃迁。其底层依赖ndarray的shape、strides与dtype三元组协同工作,决定计算如何在内存中并行展开;axis参数本质是控制维度塌缩方向,而非简单对应行列;广播机制则基于右对齐、长度匹配与1维扩展规则实现无缝运算。这种设计带来显著性能优势——向量化操作可规避Python解释器开销,提升数十至百倍效率,广泛应用于科学计算、遥感处理、金融回测与AI数据预处理等场景。本文聚焦真实项目中高频出错的axis理解偏差、广

congsong2560的博客 512

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

MIT 6.S191深度学习课:从概念理解到端侧部署的完整闭环

深度学习入门常陷于‘学得懂公式却写不出代码、训得出模型却部署不了’的断层。本文聚焦MIT 6.S191这门广受工程界认可的实战型课程,解析其如何以问题驱动构建认知脚手架——从Excel手算感知机建立数值直觉,到NumPy手写反向传播破除自动微分黑箱,再到TensorFlow Lite在树莓派部署实现端侧推理。课程不堆砌前沿模型,而精选CNN、RNN、Transformer等核心架构,强调‘结构即思想’与‘约束即创新’,将可解释性(如Grad-CAM)、鲁棒性(如对抗样本)、硬件适配(量化/剪枝)融入每一环节

weixin_30412167的博客 533

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

上一篇: 关于付费专栏订阅模式调整的说明
下一篇: OpenCV-Python图像除法运算cv2.divide函数及图像相除处理
LaoYuanPython
LaoYuanPython 2020年博客之星Top3 2020年博客之星Top3 领域专家: Python技术领域 领域专家: Python技术领域
博客等级 码龄8年 15万+粉丝 1324原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

LaoYuanPython

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

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

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

打赏作者

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

抵扣说明:

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

余额充值