OpenCV:实现图像的负片

OpenCV图像负片原理与实战:从像素公式到NumPy实现 数字图像处理中,像素是构成图像的基本单元,每个像素的亮度值在0-255之间。通过对像素值进行数学变换,可以实现丰富的视觉效果,其中图像负片(反色)是最基础也最常用的操作之一。理解负片原理,不仅有助于掌握OpenCV核心的数组运算机制,还能为图像增强、特征提取等任务提供预处理思路。本文从像素公式出发,介绍使用OpenCV和NumPy实现负片效果的三种方法,并对比性能差异,同时探讨负片在医学影像、工业检测、深度学习数据增强等场景中的应用价值,帮助读者全面掌握这一经典图像处理技术。 阅读详情

负片

负片是摄影中会经常接触到的一个词语,在最早的胶卷照片冲印中是指经曝光和显影加工后得到的影像。负片操作在很多图像处理软件中也叫反色,其明暗与原图像相反,其色彩则为原图像的补色。例如,颜色值A与颜色值B互为补色,二者数值的和为255,即RGB图像中的某点颜色为(0,0,255),则其补色为(255,255,0)。

由于负片的操作过程比较简单,OpenCV并没有单独封装负片函数。所以需要自己实现一下,实现起来也非常简单,步骤如下:

  • 需要将一张图片拆分为各个颜色通道矩阵
  • 然后分别对每一个颜色通道矩阵进行处理
  • 最后再将其重新组合为一张图片

原始图片如下:

在这里插入图片描述

示例代码如下:

import cv2
import numpy as np

# 读入图片
img = cv2.imread('input_file.png')

# 获取高度和宽度
height = img.shape[0]
width = img.shape[1]

# 生成一个空的相同尺寸的图像
negative_file = np.zeros((height, width, 3))

# 拆分三通道,注意顺序
b, g, r = cv2.split(img)

# 进行负片处理,求每个通道颜色的补色
r = 255 - r
b = 255 - b
g = 255 - g

# 将处理后的结果赋值到前面生成的三维张量
negative_file[:, :, 0] = b
negative_file[:, :, 1] = g
negative_file[:, :, 2] = r

# 将生成的图片保存起来
cv2.imwrite('negative_file.jpg', negative_file)

在这里插入图片描述

总结

负片是一种特殊的照片处理方式,它是在胶片摄影时代流行的一种技术,现在在数字图像处理中也有应用。

负片是一种颜色和亮度被反转的图像,即图像中原本暗的地方会变成亮的,原本亮的地方会变成暗的,同时图像的色彩也会反转。这种效果可以通过在数字图像处理软件中对图像进行“反相”处理来实现。

在数字摄影中,负片的应用很广泛。例如,许多摄影师会使用负片效果来创造一种特殊的艺术效果,或者用于照片的后期处理。此外,负片还可以用于图像增强,特别是在需要突出某些细节的情况下,例如在医学图像处理中。

总的来说,负片是一种非常有趣和实用的特殊照片处理方式,它可以帮助您创造出独特的艺术效果,并且在图像增强和后期处理方面也具有很大的潜力。

OpenCV图像负片实现:从像素操作到向量化编程的入门指南 图像处理入门阶段,理解像素操作与数据类型是构建后续算法能力的基础。在数字图像中,负片效果本质上是将每个通道的像素值进行反转映射,这一过程看似简单,却涵盖了数组遍历、数值溢出、通道顺序和向量化编程等核心知识点。借助OpenCV与NumPy,开发者可以用双重循环、矩阵减法或bitwise_not等不同方式实现反色,性能差异可达百倍以上,充分体现向量化运算在图像批处理中的关键价值。该技术广泛应用于医学影像阅片、印刷反白、摄影风格化以及深度学习数据增强等场景。掌握负片的多种实现与优化方法,不仅能帮助初学者快速建立图 阅读详情

相关推荐

数字图像处理实验一:灰度变换与OpenCV实践全解析

数字图像处理是计算机视觉与人工智能的基础学科,其核心思想在于将图像视为数值矩阵,通过像素值的数学运算实现增强与分析。灰度变换作为最基础的图像增强手段,包括负片、对数拉伸与伽马校正,它们分别对应不同的映射函数,用于调整亮度、对比度或压缩动态范围。直方图统计则能直观反映像素分布,助力理解变换前后图像特征的变化。在工程实践中,Python与OpenCV提供了高效的图像读写与处理接口,但开发者常遇到BGR通道顺序、uint8整数溢出、中文路径读取失败等隐蔽问题。掌握这些基础原理与避坑技巧,能帮助学习者快速上手图像处

weixin_31100517的博客 41

Opencv转换图片为负片

image在计算机中存储的就是矩阵信息,shape信息为[height,width,C],其中height,width为图片的长宽信息。C代表图片的通道数(图片信息是保存为3通道的,即红绿蓝)。因此只要循环遍历图片矩阵中的值,使用255减去该值即可。

Ethan_Rich的博客 1142

Rockchip rv1126平台在gstreamer1中添加OpenCv实现视频流负片的效果

rv1126 gstreamer opencv negetive effect

Aisy_D的专栏 1455

图像处理------负片

负片是经曝光和显影加工后得到的影像,其明暗与被摄体相反,其色彩则为被摄体的补色,它需经印放在照片上才还原为正像。我们平常所说的用来冲洗照片的底片就是负片。

Do my best! 1928

Python3与OpenCV3.3 图像处理(补)--第三节补充

第三节有一段代码是操作像素,将图像呈现出负片的效果,也就是像素取反。这段代码本身是没有问题的,但是运行起来后会发现你所提供的图片越大,处理起来速度越慢,这是因为我们在代码里使用了嵌套多层for循环,对于我们练习这样是没问题的,但是如果在实际项目中这样使用,会导致系统运行特别慢。那么我们该怎么办呢,其实OpenCV中有像素取反的方法,只需把for循环代码改为如下一行代码,就可以了。这样...

喵叔 2576

在OpenCV里实现负片函数imcomplement

大家要是使用过MATLAB,要想取得负片就会使用到这个imcomplement函数,这个函数就是对图像进行取反的动作,比如灰度为0,负片运算之后就是255了,同理255转为0。下面使用OpenCV来实现相关的功能,这里采用查找表的方式,以便提高计算速度,例子如下: #python 3.7.4,opencv4.1 #蔡军生 https://blog.csdn.net/caimouse/artic...

大坡3D软件开发 1798

负片与水印效果(OpenCV)

调用putText函数,以图像矩阵为第1个参数,输出内容为第2个参数,在图像上直接输出水印文字。将像素的三色值设为(255-原值。

weixin_51756038的博客 535

opencv图像取反

用opencv对图像进行取反,并显示图像的负片。

python opencv(6)生成负片和水印

生成负片的方法很简单,只要将像素值设为255-原值即可,水印的生成可调用putText()函数。import cv2 import numpy as np fn = "baboon.jpg" if __name__ == '__main__': print 'loading %s ...' % fn print 'processing...' img = cv2.imread

超超级钢铁侠 5191

VC6.0平台对BMP图像进行反白(即负片)和调窗

通过VC6.0平台对打开的BMP位图(灰度图像)进行反白和调窗处理。在调窗函数里可以修改为自己想要的窗。

基于opencv二值取反

反色处理指的是:如果原先图像的背景是白色,而目标是黑色的话;经过反色处理后,背景变为白色,目标变为黑色。在opencv中,对于二值图的反色处理有两种方法

OpenCV-Python学习笔记2 变亮、变暗、日落、水印等

调节图像亮度调节原理:将像素值变小,全部色彩变暗;将像素值变大,全部色彩变亮。#-*- coding: utf-8 -*- import cv2 import numpy as np fn = "test1.jpg" if __name__ =='__main__': print('loading... %s' % fn) print (u'显示原图') img = cv2.

猿来这样-谢厂节的博客 1万+

Ubuntu 22.04 上 Mezzanine CMS 完整安装指南

CMS(内容管理系统)是构建博客、企业官网等静态与动态内容混合站点的核心技术栈;Django 作为 Python 生态中最成熟的 Web 框架,凭借其 ORM、Admin 和安全机制,成为 CMS 开发的首选基础。Mezzanine 是基于 Django 的轻量级 CMS,以开箱即用、零配置多语言和内置 SEO 工具为特色,特别适合中小项目快速落地。在 Ubuntu 这类强调稳定性的服务器操作系统上部署时,关键挑战并非代码逻辑,而是系统层依赖协同——如 Python 版本锁定、SQLite FTS5 支持、

weixin_33508411的博客 296

opencv python 创建灰度图_使用OpenCV创建自己的素描

你是否曾想让一个艺术家给自己画素描?现在你可以很容易地使用OpenCV在几分钟内完成自己的素描。只需4个步骤,OpenCV将为你提供相同的肖像。从图1到图2只需4个步骤。图1图2让我们深入研究一下。不用拿起画笔给自己画素描,对于这个特定的任务,我们将使用google colaboratorial或简称“Colab”,它允许你在浏览器中编写和执行Python,无需配置,可以自由访问gpu,并且可以轻...

weixin_42437126的博客 751

Error: dependent ‘..\..\..\..\Qt\5.15.2\msvc2019\include\QtWidgets\QMainWindow‘ does not exist.

核心问题:修改 Build 目录为源码子目录后,MSVC 编译报错,本质是变量设置异常,导致 qmake 生成多余回溯路径;临时解决:在 .pro 文件添加;最优解决:将上述配置写入 Qt 的 msvc 对应 qmake.conf 全局文件,一劳永逸;禁止 qmake 计算路径时向上回溯,避免生成异常路径。

mumufan05的专栏 868

软考29-上午题-【数据结构】-排序

数据结构7种排序

qq_31532983的博客 1568

GDPU|医学图像处理 实验二 医学图像增强(1)

GDPU医学图像处理实验二医学图像增强(1)。本实验通过Python与OpenCV实现图像灰度线性及非线性变换。利用反色操作(255−img)生成乳腺图像负片;采用伽玛变换对不同图像进行处理,发现γ=2时对比度提升明显,γ=5在机场图中增强效果最佳,γ=0.6在脊椎图中清晰度最优,有效改善图像视觉效果。

2301_79904341的博客 275

【随机过程】Markov Chain的定义及发展历程与实际应用

本模块书写的初衷:由于在学习张波张景肖等学者所著的《应用随机过程》存在着不甚了解的知识点,经过个人查找资料并整理、分享,希望能够为有同样疑惑的读者贡献绵薄之力,同时如果个人编写内容有错误,恳请读者指正。本文为对《应用随机过程》第42页中Markov Chain基本概念的补充。1.Markov Chain的定义俄国数学家 Andrey Andreyevich Markov 研究并提出一个用数学方法就能解释自然变化的一般规律模型,被命名为马尔科夫链(Markov Chain)。

qq_49657150的博客 3738

OpenCV图像处理实战:通道拆分、灰度化与反色技术

图像处理是计算机视觉的基础技术,涉及色彩空间转换、特征提取等核心操作。OpenCV作为主流视觉库,提供了BGR/RGB转换、灰度化等基础API,通过像素级运算实现图像增强。在工程实践中,通道拆分可提取颜色特征,灰度化能降低计算复杂度,反色处理则常用于增强对比度。这些技术组合后,可应用于视频监控预处理、医学影像分析等场景。本文以Python+OpenCV为例,详解如何在循环条件下实现图像通道分离、cv2.cvtColor灰度转换以及255-value反色算法,并提供实时视频流和批量处理的完整代码方案。

weixin_28680865的博客 325

从零到一:手把手教你用YonBuilder for NCC搭建NC Cloud 2021.11开发环境(含避坑指南)

本文详细指导如何使用YonBuilder for NCC搭建NC Cloud 2021.11开发环境,涵盖硬件要求、软件安装、YonBuilder配置及常见故障排除。特别提供避坑指南,帮助开发者快速上手NCC开发,确保环境配置的原子化分解和开发思维的体系化建立。

weixin_42523326的博客 332

Jenkins Job DSL:用代码管理CI/CD配置的实践指南

Jenkins 是持续集成(CI)领域的经典开源平台,其核心价值在于自动化构建与交付流程。然而传统 UI 配置方式导致配置不可版本化、难以复现、审计困难,严重制约团队规模化协作效率。Job DSL 作为一种声明式配置即代码(IaC)方案,通过 Groovy 脚本驱动 Jenkins 内部 API,实现 Job、View、Folder 等资源的程序化创建与维护,天然支持 Git 版本控制、权限审计与环境一致性保障。它不替代 Pipeline,而是与其协同构成‘流程定义’与‘基础设施定义’双轨体系,显著提升 C

weixin_33744141的博客 510

opencv创建负片

现将RGB模式转为GRAY模式,变为单通道,然后反转,就会出现负片的效果 #include<opencv2/opencv.hpp> #include<iostream> using namespace cv; using namespace std; int main(int argc, char** argv) { //读入打开图像 Mat src,gray_sr...

惶恐的小白的博客 925

1. SAP Fiori Elements 开发环境的搭建和开发准备工作

本文介绍了本地使用 Visual Studio Code 进行 Fiori Elements 开发所需要安装的这个扩展包里6个能够提高 Fiori Elements 应用开发效率的扩展。在本教程后续步骤里我们会通过实际的例子介绍这些 Visual Studio Code 扩展的详细用法。

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

使用opencv对图像进行负片处理

参考文章对图像进行“负片处理”#include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" #include&lt;iostream&gt; using namespace cv; void LutFunc(Mat &amp;I); void AtFunc(Mat &amp;I); void Pt...

menghuanxiy的专栏 2770

基于轻量化网络的干扰信号智能识别算法

针对干扰信号识别时卷积神经网络模型体积大、训练周期长、对硬件存储和计算要求高等问题,本 文提出了一种基于改进轻量级网络模型 SqueezeNet 的干扰信号智能识别算法。该方法首先利用距离多普勒 (Range‑Doppler,RD)处理获得目标及干扰信号的RD图像,接着采用滑窗变换、归一化等技术对RD图像进行重 塑;然后采用基于 RD 信息尺寸的隐层和通道剪枝措施对 SqueezeNet 网络进行改进,缩小了模型尺寸和存储空 间;最后利用不同参数的测试样本拓展网络模型的泛化性能。

qq_43416206的博客 537

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

GStreamer中嵌入OpenCV实现负片效果:RV1126嵌入式实战

图像处理中的基础操作如像素取反、颜色反转,看似简单,但在实时视频流与嵌入式平台的双重约束下,会演变为涉及内存带宽、格式协商与生命周期管理的系统工程。本文从图像处理基本概念出发,介绍如何利用OpenCV的CPU计算能力处理视频帧,并深入分析GStreamer作为多媒体管道的核心价值。针对瑞芯微RV1126平台无GPU、算力受限的特点,探讨交叉编译OpenCV、利用NEON指令加速、避免内存拷贝等优化手段。通过appsink与appsrc的组合,实现GStreamer管道内逐帧调用OpenCV算法,完成负片特效

weixin_29171087的博客 328

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

上一篇: 机器学习:可解释学习
下一篇: 数字图像处理:亮度对比度-几何变换-噪声处理
uncle_ll
uncle_ll 领域专家: 人工智能技术领域 领域专家: 人工智能技术领域
博客等级 码龄12年 5863粉丝 946原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

uncle_ll

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

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

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

打赏作者

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

抵扣说明:

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

余额充值