图像的反转

news2024/12/23 18:28:25

图像颜色的反转一般分为两种:一种是灰度图片的颜色反转,另一种是彩色图像的颜色反转。

本节使用的原图如下:

1.1 灰度图像颜色反转

灰度图像每个像素点只有一个像素值来表示,色彩范围在0-255之间,反转方法255-当前像素值。

首先需要安装OpenCV:

导入本例所需的程序包:

In [ ]:

%matplotlib inline

import cv2

import numpy as np

from matplotlib import pyplot as plt

将原图转换为灰度图片:

In [ ]:

img = cv2.imread('./lena.jpg', 1)

height, width, deep = img.shape

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

plt.imshow(gray, cmap='gray')

plt.show()

反转图片中所有的像素值:

In [ ]:

dst = np.zeros((height,width,1), np.uint8)

for i in range(0, height):

    for j in range(0, width):

        grayPixel = gray[i, j]

        dst[i, j] = 255-grayPixel

将反转后的图像保存再显示出来,可以看到灰度颜色已经反转:

In [ ]:

cv2.imwrite("./lena_changed.jpg", dst)

dst = cv2.imread('./lena_changed.jpg', 1)

plt.imshow(dst)

plt.show()

1.2 彩色图像颜色反转

彩色图像的每个像素点由RGB三个元素组成,所以反转的时候需要用255分别减去b,g,r三个值。

重新读取图像并进行颜色反转:

In [ ]:

img = cv2.imread('./lena.jpg', 1)

height, width, deep = img.shape

# 彩色图像颜色反转 NewR = 255-R

dst = np.zeros((height, width, deep), np.uint8)

for i in range(0, height):

    for j in range(0,width):

        (b, g, r) = img[i, j]

        dst[i, j] = (255-b,255-g,255-r)

将反转后的图像保存再显示出来,可以看到彩色图像颜色已经反转:

In [ ]:

dst2 = cv2.cvtColor(dst, cv2.COLOR_BGR2RGB)

plt.imshow(dst2)

plt.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1894162.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

typescript2-类的类型

/* 输出 吃饭 游泳 */ []( )继承与多态------------------------------------------------------------------------1. 子类继承父类特征子类 extends 父类2. 当需要父类参数传递时,用子类也可以,这就是多态/* 继承:子类继承父类 多态…

【C语言】—— 文件操作(下)

【C语言】—— 文件操作(下) 前言:五、文件的顺序读写5.1、 顺序读写函数介绍5.2、 f p u t c fputc fputc 函数5.3、 f g e t c fgetc fgetc 函数5.4、 f p u t s fputs fputs 函数5.5、 f g e t s fgets fgets 函数5.6、 f p r i n t f…

VUE Pinia状态持久化

效果 实现方法 插件:pinia-plugin-persistedstate 链接地址 具体操作 安装 npm i pinia-plugin-persistedstate 添加到 pinia 实例上 import { createPinia } from pinia import piniaPluginPersistedstate from pinia-plugin-persistedstateconst pinia cre…

申请SSL证书 SSL是如何保护网站安全的

随着互联网的不断发展,网络安全问题日益凸显,特别是在数据传输和存储方面。为了保护网站和用户的数据安全,SSL(安全套接层)技术应运而生,成为了保护网站安全的重要工具。本文将详细介绍SSL如何保护网站安全…

【问题解决】plt.show()画出来的图像只在pycharm右侧栏显示

问题情况如下: 画出的图只在右侧栏显示,而我们想弹出一个独立的窗口,拖动鼠标可以360度查看图像,还可以保存图片。 【 问题解决 】: File -> Settings ->Tools-> Python Scientific -> 将“Show plots i…

Python从0到100(三十六):字符和字符集基础知识及其在Python中的应用

1. 字符和字符集概述 字符(Character)是构成书面语言的基本元素,它包括但不限于各国家的文字、标点符号、图形符号和数字。字符集(Character set)则是一个包含多个字符的系统,用于统一管理和编码不同的字符。 常见字符集 ASCII:最早的字符…

初尝PaddleOCR识别图片中的文字

引言 PaddleOCR是一个基于飞桨深度学习框架的OCR工具包,它集成了丰富的文字检测、识别和后处理算法,能够高效、准确地识别出图片中的文字。 说明 OpenVINO.NET是一个由开源开发者sdcb发布的,一个个强大的工具集,通过优化神经网…

高性价比模块:LSYT201B语音模块学习使用

最近打算做个语音的项目,找到了深圳雷龙发展的LSY201B这款语音模块,写出来安利一下 程序源码:SuiXinSc/Speech-Module (github.com) 或者进入Q群找我获取 目录 一,简要介绍: 硬件参数: 1,处理…

Spring MVC 中使用 RESTFul 编程风格

1. Spring MVC 中使用 RESTFul 编程风格 文章目录 1. Spring MVC 中使用 RESTFul 编程风格2. RESTFul 编程风格2.1 RESTFul 是什么2.2 RESTFul风格与传统方式对比 3. Spring MVC 中使用 RESTFul 编程风格(增删改查)的使用3.1 准备工作3.2 RESTFul 风格的 “查询” 所有&#xf…

Linux-页表如何对物理内存进行映射

1.1 页框和页帧 我们知道通过页表可以将虚拟内存映射到对应的物理内存,而操作系统对于物理内存的管理并不是以字节为单位的,而是将物理内存分为许多大小为4KB的块,称为页框或页帧,这就是为什么我们在创建共享内存是建议将大小设定…

2024年7月4日 (周四) 叶子游戏新闻

老板键工具来唤去: 它可以为常用程序自定义快捷键,实现一键唤起、一键隐藏的 Windows 工具,并且支持窗口动态绑定快捷键(无需设置自动实现)。 卸载工具 HiBitUninstaller: Windows上的软件卸载工具 《最终幻想14》画面升级后 著名…

YOLOv10全网最新创新点改进系列:融合GSConv+Slim Neck,双改进、双增强,替换特征融合层实现, 轻量化涨点改进策略,有效涨点神器!

YOLOv10全网最新创新点改进系列:融合GSConvSlim Neck,双改进、双增强,替换特征融合层实现, 轻量化涨点改进策略,有效涨点神器! 所有改进代码均经过实验测试跑通!截止发稿时YOLOv10已改进40&…

【刷题笔记(编程题)05】另类加法、走方格的方案数、井字棋、密码强度等级

1. 另类加法 给定两个int A和B。编写一个函数返回AB的值,但不得使用或其他算数运算符。 测试样例: 1,2 返回:3 示例 1 输入 输出 思路1: 二进制0101和1101的相加 0 1 0 1 1 1 0 1 其实就是 不带进位的结果1000 和进位产生的1010相加 无进位加…

H5实现第三方分享功能,(WhatsApp,Facebook,Messenger,Instagram,Telegram,Zalo,Twitter/X)

1. H5实现第三方分享功能 1. WhatsApp 分享 https://api.whatsapp.com/send/?phone&app_absent0&text${codeUrl}2. Facebook 分享 https://www.facebook.com/sharer/sharer.php?u${codeUrl}3. Messenger 分享 https://www.messenger.com/?${codeUrl}4. Instagra…

​​服务拆分的原则

目录 一、单一职责原则 二、服务自治原则 三、单向依赖 一、单一职责原则 单⼀职责原则原本是面向对象设计中的⼀个基本原则, 它指的是⼀个类应该专注于单⼀功能. 不要存在多于⼀个导致类变更的原因 在微服务架构中, ⼀个微服务也应该只负责⼀个功能或业务领域, 每个服务应该…

代码随想录算法训练营第70天图论9[1]

代码随想录算法训练营第70天:图论9 ‍ 拓扑排序精讲 卡码网:117. 软件构建(opens new window) 题目描述: 某个大型软件项目的构建系统拥有 N 个文件,文件编号从 0 到 N - 1,在这些文件中,某些文件依赖于其他文件的…

html+css+js淘宝商品界面

点击商品&#xff0c;alert弹出商品ID 图片使用了占位符图片&#xff0c;加载可能会慢一点 你可以把它换成自己的图片&#x1f603;源代码在图片后面 效果图 源代码 <!DOCTYPE html> <html lang"zh"> <head> <meta charset"UTF-8"…

嵌入式底层系统了解

当裸机功能不复杂的时候&#xff0c;即类似与点亮一个LED灯&#xff0c;驱动LCD和OLED这样的模块&#xff0c;以及各位大学生的搭积木式的毕业设计(狗头保命&#xff09;&#xff0c;此时可以简单地分为硬件和软件层&#xff08;应用层),以及以中间层作为中间联系。 当需要实现…

代码随想录算法训练营第2天|LeetCode977,209,59

977.有序数组平方 题目链接&#xff1a; 977. 有序数组的平方 - 力扣&#xff08;LeetCode&#xff09; 文章讲解&#xff1a;代码随想录 视频讲解&#xff1a; 双指针法经典题目 | LeetCode&#xff1a;977.有序数组的平方_哔哩哔哩_bilibili 第一想法 暴力算法肯定是先将元素…