OpenCV 4基础篇| OpenCV像素的编辑

news2024/9/23 0:35:55

目录

  • 1. 前言
  • 1. 像素的访问
    • 1.1 数组索引访问
    • 1.2 img.item()
  • 2. 像素的修改
    • 2.1 数值索引修改
    • 2.2 img.itemset()

1. 前言

  • 像素是构成数字图像的基本单位,像素处理是图像处理的基本操作。
    对像素的访问、修改,可以使用 Numpy 方法直接访问数组元素。

1. 像素的访问

1.1 数组索引访问

语法结构:

retval = img[row, col, cancel] 
  • col:列索引
  • row:行索引
  • cancel:通道索引, 0 表示蓝色通道,1 表示绿色通道,2 表示红色通道
  • retval:获取彩色图像中特定位置的一个颜色通道的值
import cv2

imgFile = "img/lena.jpg"  
img1 = cv2.imread(imgFile, flags=1)  # flags=1 读取彩色图像(BGR)
x = 0  # 列索引
y = 1  # 行索引
value = img1[x, y]
print(f"通道值: ({x}, {y}): {value}")
# 假设我们想要获取位于第10行第20列的红色通道值
x = 20  # 列索引
y = 10  # 行索引
i = 2  # 红色通道索引
# 获取红色通道的值
red_value = img1[y, x, i]
# 输出红色通道的值
print(f"红色通道值: ({x}, {y}): {red_value}")

在这里插入图片描述

1.2 img.item()

语法结构:

retval = img.item(row, col, cancel)  #获取数组中单个元素的值
  • col:列索引
  • row:行索引
  • cancel:通道索引, 0 表示蓝色通道,1 表示绿色通道,2 表示红色通道
  • retval:获取彩色图像中特定位置的一个颜色通道的值
import cv2  
import numpy as np  
  
# 读取彩色图像  
img = cv2.imread('img/lena.jpg')  
  
# 获取位于 (10, 20) 位置的像素的蓝色通道值  
blue_value = img.item(10, 20, 0)  
  
# 输出蓝色通道值  
print(f"蓝色通道值 (10, 20): {blue_value}")

2. 像素的修改

2.1 数值索引修改

img[row, col, channel] = new_value

2.2 img.itemset()

语法结构:

img.itemset(row, col, channel, new_value)  #用于设置数组中单个元素的值
  • col:列索引
  • row:行索引
  • cancel:通道索引, 0 表示蓝色通道,1 表示绿色通道,2 表示红色通道
  • new_value:设置的新值
import cv2  
import numpy as np  
  
# 读取彩色图像  
img = cv2.imread('img/lena.jpg')  
  
# 将位于 (10, 20) 位置的像素的红色通道值设置为 255(白色)  
img.itemset(10, 20, 2, 255)  
  
# 注意:img.itemset() 没有返回值,它直接修改数组  
# 如果需要,你可以使用 img.item(10, 20, 2) 来验证新值  
new_red_value = img.item(10, 20, 2)  
print(f"新红色通道值 (10, 20): {new_red_value}")

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

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

相关文章

专项:PID控制方法深究

1.前言 PID在工业界随处可见。其的原理是什么? 2.数学物理代表意义 PID全名为比例积分微分控制器。顾名思义,表明其由三个控制器组成。 一是P,其代表比例(Proportional); 二是I,其代表积分(I…

【Java程序设计】【C00267】基于Springboot的在线考试系统(有论文)

基于Springboot的在线考试系统(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 本系统是基于Springboot的在线考试系统;本系统主要分为管理员、教师和学生三种角色; 管理员登录系统后,可以对首页&#x…

C# (WebApi)整合 Swagger

SpringBoot-整合Swagger_jboot整合swagger-CSDN博客 C# webapi 也可以整合Swagger webapi运行其实有个自带的HELP页面 但是如果觉得UI不好看,且没办法显示方法注释等不方便的操作,我们也可以整合Swagger 一、使用NuGet控制台安装Swagger 在菜单中选择…

day41打卡

day41打卡 46. 携带研究材料(第六期模拟笔试) 状态表示 ​ 二维:dp[i] [j] 表示从下标为[0-i]的物品里任意取,放进容量为j的背包,价值总和最大是多少。 一维: ​ dp[j]表示:容量为j的背包&a…

第三百六十五回

文章目录 1. 概念介绍2. 方法与信息2.1 获取方法2.2 详细信息 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何获取设备信息"相关的内容,本章回中将介绍如何获取App自身的信息.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在本…

在 where子句中使用子查询(一)

目录 子查询返回单行单列 查询公司工资最低的员工信息 查找公司雇佣最早的员工信息 子查询返回单行多列 查询与 ALLEN 工资相同,职位相同的所有员工信息 子查询返回多行单列 IN 操作 查询职位是“MANAGER”的所有员工的薪水 Oracle从入门到总裁:https://bl…

Xcode中App图标和APP名称的修改

修改图标 选择Assets文件 ——> 点击Applcon 换App图标 修改名称 点击项目名 ——> General ——> Display Name

华清远见作业第四十二天——Qt(第四天)

思维导图&#xff1a; 编程&#xff1a; 代码&#xff1a; widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QTextToSpeech> //语音播报类 QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public Q…

内核解读之内存管理(6)address_space建立文件索引结点inode和页page、虚拟地址空间vma的映射

内存管理和文件系统总会交织在一起&#xff0c;所以我们今天聊的内容和文件系统有关。 上一节的struct page结构体中&#xff0c;我们看到了一个成员struct address_space*。很明显是用于建立page和address_space的关联。 它是代表某个地址空间吗&#xff1f;实际上不是的&am…

华为OD机试真题-执行时长-2023年OD统一考试(C卷)---Python3-开源

题目&#xff1a; 考察内容&#xff1a; if for math.ceil()向上取整 代码&#xff1a; """ 题目分析&#xff1a;输入&#xff1a; int 1次最多执行的任务个数 int 数组长度 list 任务数组--表示任务个数 输出&#xff1a; 执行完所有任务最小时间 eg: 3…

C语言-指针详解速成

1.指针是什么 C语言指针是一种特殊的变量&#xff0c;用于存储内存地址。它可以指向其他变量或者其他数据结构&#xff0c;通过指针可以直接访问或修改存储在指定地址的值。指针可以帮助我们在程序中动态地分配和释放内存&#xff0c;以及进行复杂的数据操作。在C语言中&#…

【Java程序设计】【C00288】基于Springboot的篮球竞赛预约平台(有论文)

基于Springboot的篮球竞赛预约平台&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的篮球竞赛预约平台 本系统分为前台功能模块、管理员功能模块以及用户功能模块。 前台功能模块&#xff1a;用户进入到平台首页&a…

CSDN付费阅读需要哪些条件?

文章目录 前言一、博客等级要求二、原力等级要求结束语 前言 hello&#xff0c;大家好&#xff01;我是BoBo仔吖&#xff0c;祝大家元宵节快乐呀~ csdn是一个善良的网站&#xff0c;它提供了各种功能空间&#xff0c;比如InsCode运行代码&#xff0c;还有鼓舞大家努力发文的勋…

全能代码生成器,自动生成前后端代码、生成项目框架、生成JavaBean、生成数据库文档、自动化部署项目(TableGo v8.4.0)

TableGo_20240224 v8.4.0 正式版发布&#xff0c;此次版本累计更新如下&#xff1a; 1、TableGo专属LOGO上线 2、生成数据库文档ER图新增备注字段名的生成配置 3、生成自定义文件功能新增临时参数配置&#xff0c;用于使用临时数据生成自定义文件 4、新增基于Excel数据生成…

【算法与数据结构】127、LeetCode单词接龙

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;示例1为例&#xff0c;hit到达cog的路线不止一条&#xff0c;如何找到最短是关键。广度优先搜索是一圈…

汪峰哭晕在厕所-《实现领域驱动设计》中译本评点-第2章(1)

相关链接 DDD领域驱动设计批评文集>> 《实现领域驱动设计》的翻译错误>> [答疑]《实现领域驱动设计》的译者其实没错?&#xff08;一&#xff09;>> [答疑]《实现领域驱动设计》的译者其实没错?&#xff08;二&#xff09;>> 十多年前&#xff0…

设计一个 shell 命令行程序

目录 实现 shell 主要思路 代码&#xff08;Linux&#xff09;系统 实现 shell 主要思路 1、要知道一个 shell 进程在运行起来都会在命令行呈现什么&#xff0c;如图是Xshell 登录成功后的界面&#xff1a;所以第一步要做的就是打印命令行提示符。 Xshell 命令行提示符的组…

人工智能_普通服务器CPU_安装清华开源人工智能AI大模型ChatGlm-6B_003---人工智能工作笔记0098

前面的环境安装差不多了,这里我没有安装git,因为我认为用不到,好下面去下载算法: 首先是算法下载: https://codeload.github.com/THUDM/ChatGLM-6B/zip/refs/heads/main 算法的下载连接是这里: 可以看到下载以后得到这个ChatGLM-6B-main这个算法压缩包 然后我们再去: 然后…

Linux配置Maven环境变量

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

探究全链路压力测试的含义与重要性

全链路压力测试是指对整个应用系统的各个环节或组件进行压力测试&#xff0c;以模拟实际生产环境中的用户负载和流量&#xff0c;评估系统在高负载条件下的性能表现。 1. 全链路压力测试的含义 全链路压力测试涉及系统的所有组件和环节&#xff0c;包括前端用户界面、应用服务器…