当前位置: 首页 > news >正文

【Opencv项目实战】图像的像素值反转

文章目录

  • 一、项目思路
  • 二、算法详解
    • 2.1、获取图像信息
    • 2.2、新建模板
    • 2.3、图像通道顺序
  • 三、项目实战:彩图的像素值反转(方法一)
  • 四、项目实战:彩图的像素值反转(方法二)
  • 五、项目实战:彩图转换为灰图后,像素值反转

一、项目思路

  1. 读取图像
  2. 获取图像信息
  3. 新建模板
  4. 像素值反转
  5. 显示图像

二、算法详解

2.1、获取图像信息

img.shape[0]:图像的垂直尺寸(高度)
img.shape[1]:图像的水平尺寸(宽度)
img.shape[2]:图像的通道数

2.2、新建模板

作用:根据给定形状和类型,返回全0填充的数组。
函数说明:zeros(shape, dtype=float, order='C')
输入参数:	shape:		形状dtype:		(可选参数)数据类型,默认numpy.float64。order:		(可选参数),c代表行优先;F代表列优先

2.3、图像通道顺序

需注意:Pillow加载图像后的尺寸是二维,图形化是三维,但无法打印三维尺寸。

详细区别:

  • Opencv:uint8的ndarray数据,通道顺序[h, w, c],颜色通道BGR

    • 导入模块:import cv2
      (1)cv2.imread()
      (2)cv2.imshow()
      (3)cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
  • Matplotlib(plt):uint8的ndarray数据,通道顺序[h, w, c],颜色通道RGB

    • 导入模块:import matplotlib.pyplot as plt
      (1)plt.imread()
      (2)plt.imshow()
  • Pillow(PIL):uint8的ndarray数据,通道顺序[h, w, c],颜色通道RGB

    • 导入模块:import PIL
      (1)PIL.Image.open()
      (2)PIL.Image.show()
  • Pythorch:tensor数据,通道顺序[n, c, h, w],颜色通道RGB

    • 导入模块:import torchvision
      (1)torchvision.transforms.ToTensor()
      (2)torchvision.transforms.ToPILImage()

三、项目实战:彩图的像素值反转(方法一)

在这里插入图片描述

import cv2                              # opencv读取的格式是BGR
import matplotlib.pyplot as plt         # Matplotlib是RGB
import numpy as npimg = cv2.imread(r'bee.jpg')	# 读取图像
imgInfo = img.shape				# 读取图像信息
height = imgInfo[0]				# 图像高度
width = imgInfo[1]				# 图像宽度
channel = imgInfo[2]			# 图像通道数dst = np.zeros((height, width, channel), np.uint8)
for ii in range(channel):for jj in range(height):for kk in range(width):Pixel = img[jj, kk, ii]dst[jj, kk, ii] = 255 - Pixelimg = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
dst = cv2.cvtColor(dst, cv2.COLOR_BGR2RGB)
plt.subplot(1, 2, 1),    plt.imshow(img),   plt.axis('off'),      plt.title('Raw')
plt.subplot(1, 2, 2),    plt.imshow(dst),   plt.axis('off'),      plt.title('New')
plt.show()

python–图像颜色反转

四、项目实战:彩图的像素值反转(方法二)

在这里插入图片描述

import cv2                              # opencv读取的格式是BGR
import matplotlib.pyplot as plt         # Matplotlib是RGBimg = cv2.imread(r'bee.jpg')
dst = 255 - imgimg = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
dst = cv2.cvtColor(dst, cv2.COLOR_BGR2RGB)
plt.subplot(1, 2, 1),    plt.imshow(img),   plt.axis('off'),      plt.title('Raw')
plt.subplot(1, 2, 2),    plt.imshow(dst),   plt.axis('off'),      plt.title('New')
plt.show()

五、项目实战:彩图转换为灰图后,像素值反转

在这里插入图片描述

import cv2                              # opencv读取的格式是BGR
import matplotlib.pyplot as plt         # Matplotlib是RGBimg = cv2.imread('starry_night.jpg', 1)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)        # 彩色图像转换为灰度图像(3通道变为1通道)
dst = 255 - gray                                    # 最大图像灰度值减去原图像,即可得到反转的图像img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
gray = cv2.cvtColor(gray, cv2.COLOR_BGR2RGB)
dst = cv2.cvtColor(dst, cv2.COLOR_BGR2RGB)
plt.subplot(1, 3, 1),    plt.imshow(img),   plt.axis('off'),      plt.title('Raw')
plt.subplot(1, 3, 2),    plt.imshow(gray),   plt.axis('off'),      plt.title('Gray')
plt.subplot(1, 3, 3),    plt.imshow(dst),   plt.axis('off'),      plt.title('New')
plt.show()

相关文章:

【Opencv项目实战】图像的像素值反转

文章目录一、项目思路二、算法详解2.1、获取图像信息2.2、新建模板2.3、图像通道顺序三、项目实战:彩图的像素值反转(方法一)四、项目实战:彩图的像素值反转(方法二)五、项目实战:彩图转换为灰图…...

Swagger生成接口在线文档

OpenAPI规范(OpenAPI Specification 简称OAS)是Linux基金会的一个项目,试图通过定义一种用来描述API格式或API定义的语言,来规范RESTful服务开发过程,目前版本是V3.0,并且已经发布并开源在github上。&#…...

104.第十九章 MySQL数据库 -- MySQL主从复制、 级联复制和双主复制(十四)

6.1.2 实现主从复制配置 参考官网 https://dev.mysql.com/doc/refman/8.0/en/replication-configuration.html https://dev.mysql.com/doc/refman/5.7/en/replication-configuration.html https://dev.mysql.com/doc/refman/5.5/en/replication-configuration.html https://m…...

第一次使用Python for Qt中的问题

在创建带有form的python for qt的时候,使用的库是pySide6,而不是pyqt。 因此,需要安装pyside6。 Running "/usr/bin/python3 -m pip install PySide6 --user" to install PySide6. ERROR: Could not find a version that satisfi…...

.Net Core WebApi 在Linux系统Deepin上部署Nginx并使用(一)

前言: Deepin最初是基于Ubuntu的发行版 2015年脱离Ubuntu开发,开始基于Ubuntu上游Debian操作系统 2019年脱离Debian,直接基于Linux开发,真正属于自己的上游Linux系统发行版 2022年8月,新版《Deepin V23》我下载开始了我…...

Java——打开轮盘锁

题目链接 leetcode在线oj题——打开轮盘锁 题目描述 你有一个带有四个圆形拨轮的转盘锁。每个拨轮都有10个数字: ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’ 。每个拨轮可以自由旋转:例如把 ‘9’ 变为 ‘0’&#xff0…...

JavaScript(2)

一、事件 HTML事件是发生在hTML元素上的“事情”。比如&#xff1a;按钮被点击、鼠标移动到元素上等… 事件绑定 方式一&#xff1a;通过HTML标签中的事件属性进行绑定 <input type"button" value"点我" onclick"on()"><script>fun…...

FFMPEG 安装教程windowslinux(CentOS版)

ps: 从笔记中迁移至blog 版本概述 Windows 基于win10 Linux 基于CentOS 7.6 一.Windows安装笔记 1.下载安装 https://ffmpeg.org/download.html 2 解压缩&#xff0c;拷贝到需要目录&#xff0c;重命名 3 追加环境变量 echo %PATH%setx /m PATH "%PATH%;F:\dev_tools\…...

【虹科案例】虹科任意波形发生器在量子计算中的应用

虹科AWG在量子计算中的应用精度在研究中始终很重要&#xff0c;很少有研究领域需要比量子研究更高的精度。奥地利因斯布鲁克大学的量子光学和量子信息研究所需要一个任意波形发生器&#xff08;AWG&#xff09;来为他们的研究生成各种各样的信号。01无线电频率第一个应用是在射…...

【强化学习】强化学习数学基础:随机近似理论与随机梯度下降

强化学习数学基础&#xff1a;随机近似理论与随机梯度下降Stochastic Approximation and Stochastic Gradient Descent举个例子Robbins-Monro algorithm算法描述举个例子收敛性分析将RM算法用于mean estimationStochastic gradient descent算法描述示例和应用收敛性分析收敛模式…...

ThreadLocal 学习常见问题

ThreadLocal 这个此类提供线程局部变量。这些变量不同于通常的对应变量&#xff0c;因为每个访问一个变量的线程(通过 get 或 set 方法)都有自己独立初始化的变量副本。ThreadLocal 实例通常是希望将状态与线程(例如&#xff0c;用户 ID 或事务 ID)关联的类中的私有静态字段。使…...

文件包含漏洞1 | iwebsec

文章目录00-文件包含漏洞原理环境01-本地文件包含读取敏感文件信息配合文件上传getshell配合日志文件getshell配合SSH日志配合运行环境00-文件包含漏洞原理 为什么要文件包含&#xff1f; 为什么会有文件包含漏洞? 因为将被包含的文件设置为变量&#xff0c;用来进行动态调用…...

基于MindAR实现的网页端WebAR图片识别叠加动作模型追踪功能(含源码)

前言 由于之前一直在做这个AR/VR 相关的功能开发&#xff0c;大部分的时候实现方式都是基于高通Vuforia或者EasyAR等基于Unity3d的引擎的开发&#xff0c;这样开发的程序大部分都是运行在APP上&#xff0c;安卓或者ios的开发也能一次性搞定。不过当时大部分的需求都是需要在网…...

ssh 远程连接方式总结

SSH 概述 SSH&#xff08;安全外壳协议 Secure Shell Protocol&#xff0c;简称SSH&#xff09;是一种加密的网络传输协议&#xff0c;用于在网络中实现客户端和服务端的连接&#xff0c;典型的如我们在本地电脑通过 SSH连接远程服务器&#xff0c;从而做开发&#xff0c;Wind…...

springboot+mybatisPlus简单实现数据分页显示

项目地址&#xff1a;https://gitee.com/flowers-bloom-is-the-sea/geo_demo/tree/v1.0/ 这个项目的测试是可以的。 先来查看一些tb_shop表&#xff1a; id name x y ------ ------ ------ --------里面是空数据&#xff0c;那么现在对数据里插入一些数据…...

axios的基本使用

axios 安装axios npm install axios 使用时先导入 import axios from ‘axios’ axios请求方式 axios支持多种请求方式 axios(config) axios.request(config) axios.get(url[, config]) axios.head(url, [, config]) axios.post(url[, data[, config]]) axios.put(url[, dat…...

核心 Android 调节音量的过程

核心 Android 系统提供的调节音量的方法 核心 Android 系统提供了多种调节音量的方法&#xff0c;这些方法主要包括如下这些。 如在 Android Automotive 调节音量的过程 中我们看到的&#xff0c;CarAudioService 最终在 CarAudioDeviceInfo 中 (packages/services/Car/servi…...

用C/C++制作一个简单的俄罗斯方块小游戏

用C/C制作一个简单的俄罗斯方块小游戏 用C/C制作一个简单的俄罗斯方块小游戏 0 准备1 游戏界面设计 1.1 界面布局1.2 用 EasyX 显示界面1.3 音乐播放 2 方块设计 2.1 方块显示2.2 随机生成一个方块2.3 方块记录 3 方块移动和旋转 3.1 方块的移动3.2 方块的旋转3.3 方块的碰撞和…...

使用免费负载生成器swingbench对oracle数据库进行压力测试(测试Oracle的功能或评估性能)

1.Swingbench 简介 Swingbench 是一个免费负载生成器&#xff08;和基准测试&#xff09;&#xff0c;旨在对 Oracle 数据库 进行压力测试。目前最新版本 Swingbench 2.6。 SwingBench 由负载生成器&#xff0c;协调器和集群概述组成。该软件可以生成负载 并绘制交易/响应时间…...

【预告】ORACLE Primavera P6 v22.12 虚拟机发布

引言 离ORACLE Primavera P6 EPPM最新系统 v22.12已过去了3个多月&#xff0c;应盆友需要&#xff0c;也为方便大家体验&#xff0c;我近日将构建最新的P6的虚拟环境&#xff0c;届时将分享给大家&#xff0c;最终可通过VMWare vsphere (esxi) / workstation 或Oracle virtua…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...