cv2.addWeighted 操作 np.array 踩坑记录

ComfyUI+Wan2.2:AI视频生成工作流部署与电影级镜头实战 在 AI 视频生成领域,Wan2.2(通义万相 2.2)因其出色的画面稳定性和生成质量受到广泛关注。与早期版本相比,Wan2.2 在人物动作连贯性、细节保留和闪烁抑制方面有明显提升,特别适合制作人物访谈、电影镜头和短视频内容。 实际部署 Wan2.2 工作流时,技术选型主要集中在 ComfyUI 和 Stable Video Diffusion(SVD)两种方案。ComfyUI 更适合需要精细控制生成流程的开发者,而 SVD 更适合快速生成基础视频片段。本文将以 ComfyUI + Wan2.2 为核心,展 阅读详情

cv2.addWeighted函数是把两张图片img1, img2达到融合的效果,

看官网的解释,下图中f0和f1代表两张图片,

在这里插入图片描述
用法是这样的

import cv2

alpha = 0.6
beta = (1.0 - alpha)

src1 = cv2.imread("img1.jpg")
src2 = cv2.imread("img2.jpg")

dst = cv2.addWeighted(src1, alpha, src2, beta, 0.0)

这个例子比较好理解,src1, src2都是cv::Mat型,很顺利就可以达到如下的效果:
在这里插入图片描述 ➕ 请添加图片描述 ===

请添加图片描述
这是我想得到的结果。

但是现在src1, src2为np.array, 其中src1.dtype为int8型,src2.dtype为np.float64型。
注意src1和src2的shape首先要是匹配的,假设都是(600, 600, 3).

踩坑1:

这时调用

dst = cv.addWeighted(src1, alpha, src2, beta, 0.0)

会报长长一段错,

cv2.error: OpenCV(4.6.0) /io/opencv/modules/core/src/arithm.cpp:672: error: 
(-5:Bad argument) When the input arrays in add/subtract/multiply/divide functions 
have different types, the output array type must be explicitly specified in function 'arithm_op'

看出大意是两个array的type不同,不能做四则运算,

那么把src1也转成np.float64,再调用通过了,

踩坑2:

然而,在cv2.imshow("dst",dst)时,出现了一张大白板,
查看里面的数值都是在0~255范围内的,而且还有0值,绝不会都是255,但是不论怎么imshow都是大白板。

百思不得其解,先跳过这一步,换一下思路。

踩坑3:

于是先让src2 = src1, 如下

src2 = src1  #即将踩坑
src2[mask>0] = color  #mask为1处填上颜色
dst = cv.addWeighted(src1, alpha, src2, beta, 0.0)

猜想这回应该可以了,然而imshow得到了如下结果:

请添加图片描述
这不正常阿,无论怎么imshow还是这个结果,

于是想看看src1原图,
然而原图也变成了这个样子。。

请添加图片描述

出现这种现象 第一时间想到的是 我是不是把src1的指针给了src2, src2一变动src1也会跟着变动。
突然想到了copy操作。
改为:

src2 = src1.copy()
src2[mask>0] = color  #mask为1处填上颜色
dst = cv.addWeighted(src1, alpha, src2, beta, 0.0)

终于解决了,又想到了上面那个大白板(踩坑2)的问题,
这里用了int型能正确显示,maybe是float64的问题。

关于cv2.addWeighted()函数《python图像处理篇》 引言:在我们进行P图的时候,经常做的就是将一个表情包放在一张图上,相对于是遮住指定部分,然而在图像处理中,会有这么一种操作,就是将两幅图像按照不同的比例合成一张图像,这就是我们今天的主角函数cv2.addWeighted()。 1.函数cv2.addWeighted() 函数cv2.addWeighted()的主要功能就是将两幅图像合成为一幅图像,下面给出一个简单的例子便于理解。 先看效果: 原图1(图像来自网络,如有冒犯、侵权请联系删除) 原图2 ... 阅读详情

相关推荐

OpenCV学习之cv2.addWeighted函数

在图像处理和计算机视觉中,图像融合是一种常见的操作。函数是 OpenCV 提供的用于对两幅图像进行加权融合的函数,通过对图像像素值进行线性加权和偏移,可以实现图像的混合和过渡效果。该函数常用于图像的透明叠加、图像特效等场景。

qq_46396470的博客 3400

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通道数具有相同数量的元素时(如元组或列表对象),将图像数组和标量相

老猿Python 1362

CityScapes数据集解析与YOLOv11-seg训练全流程

语义分割是计算机视觉中的核心技术,通过像素级分类实现场景理解。CityScapes作为自动驾驶领域权威数据集,包含5000张精细标注的街景图像,支持实例分割任务。其标注采用独特的实例ID编码规则,将类别信息与对象编号融合存储。在深度学习应用中,常需将数据集转换为COCO或YOLO格式以适应不同框架。本文详细解析了CityScapes数据集的获取方法、目录结构以及标注文件解析技巧,重点介绍了如何将其转换为YOLOv11-seg训练所需的格式,包括实例掩码生成、JSON文件构建等关键步骤。针对转换过程中的常见报

weixin_33812433的博客 420

cv2.addWeighted用法

cv2.addWeighted 是 OpenCV 中的一个函数,用于将两幅图像进行加权求和。 使用方法: cv2.addWeighted(src1, alpha, src2, beta, gamma, dst) src1: 第一幅图像 alpha: 第一幅图像的权重(取值范围为 0 到 1) src2: 第二幅图像 beta: 第二幅图像的权重(取值范围为 0 到 1) gamma: 求和后的...

weixin_35755188的博客 1853

水果采摘机器人视觉系统:HSV+轻量CNN混合实战方案

水果识别是农业机器人感知层的核心技术,本质是复杂光照与动态场景下的鲁棒目标检测问题。其原理依赖色彩空间建模(如HSV对光照变化的适应性)与轻量化深度学习模型的协同优化,在算力受限边缘设备上实现精度与实时性的平衡。该技术价值在于突破实验室到田间落地的关键瓶颈,支撑机械臂精准抓取、成熟度分级与空间定位等核心功能。典型应用场景包括智能采摘机器人、果园巡检无人机及自动化分选产线。本文聚焦真实果园环境下的可部署视觉方案,深度融合HSV动态阈值分割与ShuffleNetV2等轻量CNN模型,并覆盖树莓派端TensorR

weixin_30696427的博客 365

轻量级CNN在结膜图像贫血检测中的工程实践与部署指南

卷积神经网络(CNN)作为计算机视觉的核心技术,通过模拟生物视觉机制,能够自动提取图像中的层次化特征。其原理在于通过卷积层、池化层等结构,对输入图像进行局部感知和参数共享,有效降低了模型复杂度。在医疗影像分析领域,CNN的技术价值尤为突出,它能够辅助医生进行病灶识别与筛查,提升诊断效率与一致性。特别是在资源受限的场景下,如社区诊所或家庭健康监测,轻量级CNN通过深度可分离卷积、通道混洗等优化技术,在保证精度的同时大幅降低了计算开销与模型体积,使得在移动端或边缘设备部署成为可能。本文以结膜图像贫血检测为具体应

weixin_30432579的博客 552

【OpenCV图像处理】模板匹配:cv2.matchTemplate() —— 具有尺度与旋转不变性(开发)

本文摘要:针对高分辨率模板与低分辨率原图的尺寸不变匹配需求,提出两种解决方案:(1)单尺度手动缩放匹配,通过预定义缩放因子调整模板尺寸;(2)多尺度金字塔自动搜索,在0.1-1.0范围内迭代寻找最优匹配。两种方法均采用OpenCV的模板匹配算法(TM_CCOEFF_NORMED),其中自动方法能适应未知缩放比例,输出最佳匹配位置、分数及缩放系数。实验结果表明,该方法有效解决了传统模板匹配对尺寸敏感的痛点,适用于不同分辨率但相同尺寸的医学/工业图像匹配场景。

📷 图像处理践行者 | 传统算法 · 深度学习 · 多模态 | 分享实战经验与技术洞见,探索从像素到智能的无限可能。 1410

Pytesseract中文OCR实战:图像预处理与Tesseract调参全指南

OCR(光学字符识别)是一种将图像中文字转换为可编辑文本的基础技术,其核心原理依赖于图像预处理、字符切分与语言模型校验三阶段协同。在Python生态中,Pytesseract作为Tesseract引擎的轻量封装,广泛用于中文识别场景,但实际效果高度受限于图像质量与参数配置。技术价值在于:通过OpenCV图像增强、自适应阈值、透视校正等预处理手段,显著提升低质文档(如手机拍摄票据、阴影泛黄扫描件)的识别鲁棒性;结合--oem和--psm等关键Tesseract配置,可针对性优化简体中文、竖排文本或小字号场景。

weixin_34195546的博客 274

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

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

weixin_30588675的博客 407

基于OpenCV的花盆土壤缺失检测系统设计与实现

机器视觉技术通过图像处理算法实现对物体状态的智能识别,其核心原理包括颜色空间转换、形态学处理等计算机视觉基础技术。在农业自动化领域,这类技术能显著提升检测效率和精度,典型应用包括土壤监测、作物生长分析等场景。本文介绍的基于OpenCV的花盆土壤缺失检测系统,采用HSV颜色空间分析和模块化架构设计,实现了92%以上的识别准确率。该系统通过工业机器视觉方案替代传统传感器,具有成本低、扩展性强等技术优势,特别适合家庭园艺和智能农业应用。

weixin_33726313的博客 368

8-OpenCVSharp —- Cv2.AddWeighted()函数功能(对两张图像进行加权合成)详解

是 OpenCVSharp 中非常实用的图像处理函数,它通过加权平均的方式将两张图像融合在一起,并且可以通过调整权重(alphabeta)和常数偏移量(gamma)来控制最终图像的效果。常见应用包括图像融合、透明度调整、亮度调整等。

weixin_45590420的博客 1009

SAM2视频物体跟踪实战:从零搭建环境到工程化部署

计算机视觉中的视频物体跟踪技术,旨在对视频序列中的特定目标进行持续定位与分割。其核心原理是通过提取目标的视觉特征,并在时间维度上建立关联,从而实现对目标运动轨迹的预测。这项技术的价值在于能够大幅提升视频内容分析的自动化程度,减少对人工标注的依赖。在应用场景上,它广泛服务于自动驾驶、视频编辑、安防监控和生物研究等领域。Meta AI发布的SAM2模型,凭借其零样本分割能力和内置的时空记忆模块,为视频物体跟踪提供了高效、通用的解决方案,尤其擅长处理遮挡和形变等复杂情况。

weixin_34265814的博客 347

图像分类工程骨架:线性→MLP→CNN三阶诊断法

图像分类是计算机视觉最基础且高频的落地任务,其核心不在于模型堆叠,而在于系统性诊断数据质量与特征表达能力。线性分类器作为第一道探针,可快速验证数据在当前特征空间的可分性;MLP进一步揭示非线性瓶颈位置,指导特征工程优化;CNN则聚焦领域感知的特征提取与感受野适配。这种递进式工程方法,显著降低试错成本,提升POC验证效率,广泛适用于工业质检、农业识别、医疗影像等真实场景。本文围绕linear→MLP→CNN三层骨架,详解数据诊断、特征调优与部署避坑,助力开发者从‘跑通demo’迈向稳健落地。

weixin_30824479的博客 393

Python代码调用RealESRGAN_x2plus:从模型封装到生产部署全解析

超分辨率重建是计算机视觉中提升图像质量的核心技术,其原理是通过算法从低分辨率图像中恢复高分辨率细节。这项技术的价值在于能显著改善图像的清晰度和细节表现,广泛应用于老照片修复、医学影像增强、卫星图像分析和内容创作等领域。本文聚焦于如何将先进的Real-ESRGAN_x2plus模型从传统的图形界面或脚本调用,升级为可编程、可集成的代码模块。通过深入解析模型加载、推理流程封装,并结合性能优化与错误处理,我们构建了一个健壮的Python类。该模块支持批量处理、内存操作,并能轻松集成到Web服务(如FastAPI/

weixin_34194359的博客 1837

OpenCV纯CPU车道线检测实战:雨天逆光弯道鲁棒性方案

车道线检测是智能驾驶与ADAS系统的基础视觉任务,其核心在于从复杂道路图像中稳定提取具有几何连续性和亮度对比度的线性结构。传统方法基于图像梯度、形态学增强与霍夫变换等经典图像处理技术,具备强可解释性、低算力依赖和快速场景适配能力,尤其适用于Jetson Nano等边缘设备。相比深度学习方案,OpenCV轻量级流水线无需GPU、不依赖标注数据闭环,在雨天、逆光、积水、弯道等挑战场景下通过CLAHE增强、梯形ROI掩膜、Sobel-X方向梯度、动态Canny阈值及斜率-截距联合聚类等关键技术,显著提升检测鲁棒性

weixin_34129696的博客 411

PSIM仿真实战:反激电源从设计到调试的完整流程(附短路保护配置)

本文详细介绍了使用PSIM仿真工具进行反激电源从设计到调试的完整流程,包括变压器参数设计、功率器件选型、动态特性调试以及短路保护配置。通过实战案例和仿真技巧,帮助工程师提前暴露并解决设计中的常见问题,如负载突变、输入电压波动和短路保护失效等,显著降低硬件试错成本。

weixin_29216353的博客 243

OpenCV智能抠图实战:从阈值法到深度学习

图像抠图是计算机视觉中的基础技术,其核心在于精确分离前景与背景。传统方法依赖颜色阈值和边缘检测,而现代算法如GrabCut和深度学习模型(如MODNet)通过迭代优化和神经网络实现了更高精度的分割。这些技术在电商产品图处理、影视特效等领域有广泛应用。OpenCV作为强大的计算机视觉库,提供了从简单阈值法到深度学习模型部署的全套工具链。特别是在处理复杂边缘(如毛发)和半透明物体时,结合HSV色彩空间转换、高斯混合模型等技术,可以显著提升抠图质量。通过合理的工程优化(如GPU加速、流水线并行),还能实现实时高性

weixin_30335353的博客 368

Open3D 计算点云的倒角距离(Chamfer Distance)【2025最新版】

;Chamfer Distance距离可以计算生成点云数据与标签点云数据之间的平均最短点距离。Open3D可以直接用来计算点云的Chamfer Distance距离。博客长期更新,本文最近一次更新时间为:2025年2月18日。

点云侠的博客 3254

OpenCV(Python 版)

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

qq_32381773的博客 408

Nmap源码分析(端口扫描)

端口扫描是Nmap的核心功能,用于确定目标机的端口状态(开放、关闭、过滤等),也为Nmap的服务与版本扫描、OS扫描、脚本扫描提供基本的指引信息。所以,深入理解端口扫描的实现对分析其他的扫描方式很有帮助。 1简单回顾   首先简要回顾一下端口扫描的原理以及命令行选项。 1.1扫描原理   Nmap提供的10多种类型的端口扫描方法,如TCP SYN/ACK/FIN/Xmas/NULL/ Windows/Connect,FTP Bounce, Idle scan, UDP port u...

墨痕诉清风的博客 1596

【YOLOv11改进- 主干网络】YOLOv11+RepViT: 从ViT的角度重新审视Mobile的CNN助力YOLOv11有效涨点;

本文给大家带来的改进内容是在YOLOv11中更换主干网络为RepViT,助力YOLOv11有效涨点,论文通过集成轻量级 ViT 的高效架构设计,逐步增强了标准轻量级 CNN(即 MobileNetV3)的移动友好性。这最终产生了一个新的纯轻量级 CNN 系列的主干网络。

qq_41304809的博客 784

OpenCV中文显示终极方案:Pillow协同绘制与性能优化

在计算机视觉与图像处理领域,文本标注是结果可视化与调试的关键环节。OpenCV作为核心库,其原生文本绘制函数对多语言支持有限,尤其无法直接渲染中文等非拉丁字符,这源于其底层依赖的古老字体引擎与有限的字符集。为解决此问题,开发者需理解图像数据在不同库间的格式转换原理,即OpenCV的BGR格式数组与Pillow的RGB格式Image对象的互转。这种协同方案的技术价值在于,结合了OpenCV高效的视觉处理能力与Pillow强大的字体渲染和排版引擎,实现了高质量的多语言文本叠加。其应用场景广泛,涵盖安防监控的信息

weixin_34194087的博客 660

汽车IVI中控开发入门及进阶(三十八):手机投屏HiCar开发

为了兼容这部分手机,车机端在向手机端发送USB控制命令字的同时,需要启动mDNS Server,广播车机端IP地址和HiCar SDK侦听的Server Socket端口(IP地址和端口在HiCar SDK初始化USB driver时,告知车机),在检测到手机断开USB连接时关闭mDNS Server。厂商在集成HiCar SDK开发HMI应用时,不可避免会使用到智能座舱的敏感权限,例如位置权限、摄像头权限、麦克风权限等,SDK初始化时,厂商HMI应用需要设置必要的车机参数供SDK使用。

码农17年的博客 1074
上一篇: leetcode 443. String Compression(压缩字符串)
下一篇: leetcode 28. Find the Index of the First Occurrence in a String(找到字符串第一次出现的下标)
蓝羽飞鸟
博客等级 码龄8年 1万+粉丝 727原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

蓝羽飞鸟

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

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

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

打赏作者

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

抵扣说明:

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

余额充值