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

OpenCV学习(五)——图像基本操作(访问图像像素值、图像属性、感兴趣区域ROI和图像边框)

图像基本操作

    • 5. 图像基本操作
      • 5.1 访问像素值并修改
      • 5.2 访问图像属性
      • 5.2 图像感兴趣区域ROI
      • 5.3 拆分和合并图像通道
      • 5.4 为图像设置边框(填充)

5. 图像基本操作

  • 访问像素值并修改
  • 访问图像属性
  • 设置感兴趣区域(ROI)
  • 分割和合并图像

5.1 访问像素值并修改

访问像素值

import cv2# 读取图像
# img——>(h, w, c),c为通道数
img = cv2.imread('lena.jpg')# 访问像素值
px = img[100, 100]
print("像素值:", px)
# img——>(b, g, r)
# 蓝色像素值——>对应通道b
blue = img[100, 100, 0]
print("蓝色像素值:", blue)

请添加图片描述

修改像素值

img[100, 100] = [255,255,255]
print(img[100,100])

请添加图片描述
简单访问每个像素值并修改比较缓慢,一般不使用。

Numpy数组方法array.item()array.itemset()被认为更好,但是它们始终返回标量。

更好的像素访问和编辑方法:

# 访问蓝色像素值
print(img.item(100, 100, 0))# 修改蓝色像素值
img.itemset((100,100,0), 255)

请添加图片描述

修改B通道像素值为255,区间[200:400, 200:400]

import cv2# 读取图像
# img——>(h, w, c),c为通道数
img = cv2.imread('lena.jpg')# 修改B通道像素值为255,区间[200:400, 200:400]
for i in range(200, 400):for j in range(200, 400):img.itemset((i, j, 0), 255)# 显示图像
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

请添加图片描述

5.2 访问图像属性

属性属性包括行数、列数和通道数,图像数据类型,像素数等。

import cv2# 读取图像
# img——>(h, w, c),c为通道数
img = cv2.imread('lena.jpg')# 图像形状
print('图像形状', img.shape)
# 像素总数
print('像素总数', img.size)# 图像数据类型
print('图像数据类型', img.dtype)

请添加图片描述

5.2 图像感兴趣区域ROI

对于人物图像,我们感兴趣的一般是人脸区域。使用Numpy索引再次获得ROI,并将脸复制到图像中的另一个区域:

import cv2# 读取图像
img = cv2.imread('lena.jpg')# 获取脸的区域
face = img[200:400, 200:400]# 将脸复制到另一区域
img[200:400, 0:200] = face# 显示图像
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

请添加图片描述

5.3 拆分和合并图像通道

将图像的通道进行分离,并分开展示。同时实现OpenCV在一个窗口显示多张图像。

import cv2
import numpy as np# 读取图像
img = cv2.imread('lena.jpg')# 分离通道
b, g, r = cv2.split(img)# 合并通道
img_m = cv2.merge((b, g, r))# 改变各通道图像的尺寸
b = cv2.resize(b, (200, 200))
g = cv2.resize(g, (200, 200))
r = cv2.resize(r, (200, 200))
img = cv2.resize(img, (200, 200))# 将单通道图像转换为3通道
b = cv2.cvtColor(b, cv2.COLOR_GRAY2RGB)
g = cv2.cvtColor(g, cv2.COLOR_GRAY2RGB)
r = cv2.cvtColor(r, cv2.COLOR_GRAY2RGB)# 同一窗口显示多张图像
# 拼接需要图像的形状及通道一样
hmerge = np.hstack((b, g, r, img)) # 水平拼接
vmerge = np.vstack((b, g, r)) # 垂直拼接# 显示图像
cv2.imshow('image', hmerge)
cv2.waitKey(0)
cv2.destroyAllWindows()

请添加图片描述

5.4 为图像设置边框(填充)

cv2.copyMakeBorder(src, top, bottom, left, right, borderType, dst=None, value=None)函数在卷积运算,零填充等方面有很多应用。

  • src:输入图像

  • top,bottom,left,right:边界宽度(以相应方向上的像素数为单位)

  • borderType:定义要添加哪种边框的标志,可以是以下类型

    • cv2.BORDER_CONSTANT :添加恒定的彩色边框
    • cv2.BORDER_REFLECT : 边框将是边框元素的镜像
    • cv2.BORDER_REPLICATE:最后一个元素被复制
    • cv2.BORDER_WRAP:包裹
  • dst:目标图像

  • value:边框的颜色

import cv2
import numpy as np# 读取图像
img = cv2.imread('lena.jpg')
img = cv2.resize(img, (200, 200))# 设置边框
constant = cv2.copyMakeBorder(img, 10, 10, 10, 10, cv2.BORDER_CONSTANT)
reflect = cv2.copyMakeBorder(img, 10, 10, 10, 10, cv2.BORDER_REFLECT)
replicate = cv2.copyMakeBorder(img, 10, 10, 10, 10, cv2.BORDER_REPLICATE)
wrap = cv2.copyMakeBorder(img, 10, 10, 10, 10, cv2.BORDER_WRAP)# 图像拼接,水平
hmerge = np.hstack((constant, reflect, replicate, wrap)) # 水平拼接# 显示图像
cv2.imshow('image', hmerge)
cv2.waitKey(0)
cv2.destroyAllWindows()

请添加图片描述

相关文章:

OpenCV学习(五)——图像基本操作(访问图像像素值、图像属性、感兴趣区域ROI和图像边框)

图像基本操作 5. 图像基本操作5.1 访问像素值并修改5.2 访问图像属性5.2 图像感兴趣区域ROI5.3 拆分和合并图像通道5.4 为图像设置边框(填充) 5. 图像基本操作 访问像素值并修改访问图像属性设置感兴趣区域(ROI)分割和合并图像 …...

指针仪表读数YOLOV8NANO

指针仪表读数YOLOV8 NANO 采用YOLOV8 NANO训练,标记,然后判断角度,得出角度,可以通过角度,换算成数据...

10000字!图解机器学习特征工程

文章目录 引言特征工程1.特征类型1.1 结构化 vs 非结构化数据1.2 定量 vs 定性数据 2.数据清洗2.1 数据对齐2.2 缺失值处理 原文链接:https://www.showmeai.tech/article-detail/208 作者:showmeAI 引言 上图为大家熟悉的机器学习建模流程图,…...

Java 官方提供了哪几种线程池,分别有什么特点?

JDK 中提供了 5 中不同线程池的创建方式: newCachedThreadPool newCachedThreadPool, 是一种可以缓存的线程池,它可以用来处理大量短期的突发流量。 它的特点有三个,最大线程数是 Integer.MaxValue,线程存活时间是 60 …...

DTI-ALPS处理笔记

DTI-ALPS处理笔记 前言: 前段时间刚好学习了一下DTI-ALPS处理(diffusion tensor image analysis along the perivascular space ),记录一下,以便后续学习。ALPS是2017年发表在《Japanese Journal of Radiology》的一篇文章首次提出的 (文章地址),主要用于无创评估脑内淋…...

LVS集群-NAT模式

集群的概念: 集群:nginx四层和七层动静分离 集群标准意义上的概念:为解决特定问题将多个计算机组合起来形成一个单系统 集群的目的就是为了解决系统的性能瓶颈。 垂直扩展:向上扩展,增加单个机器的性能,…...

微服务技术导学

文章目录 微服务结构认识微服务技术栈 微服务结构 技术: 解决异常定位: 持续集成,解决自动化的部署: 总结如下: 认识微服务 微服务演变: 技术栈 SpringCloud与SpringBoot版本对应关系...

p5.js 开发点彩画派的绘画工具

本文简介 点赞 关注 收藏 学会了 这几天在整理书柜时看到这套书,看到梵高,想起他的点彩画。 想到点彩画派,不得不提的一个画家叫乔治皮埃尔秀拉。据说梵高也模仿过他的画作。 我引用一下维基百科对点彩画派的解析: 点彩画派&…...

Java工具库——Commons IO的50个常用方法

工具库介绍 Commons IO(Apache Commons IO)是一个广泛用于 Java 开发的开源工具库,由Apache软件基金会维护和支持。这个库旨在简化文件和流操作,提供了各种实用工具类和方法,以便更轻松地进行输入输出操作。以下是 Com…...

Git: 仓库clone和用户配置

git clone 两种方式clone远程仓库到本地。 通过ssh 命令格式: git clone gitxxxxxx.git使用这种方法需要提前创建ssh秘钥。 首先打开一个git控制台,输入命令 ssh-keygen -t ed25519 -C “xxxxxxxxxx.com”输入命令后需要点击四次回车,其…...

构建外卖小程序:技术要点和实际代码

1. 前端开发 前端开发涉及用户界面设计和用户交互。HTML、CSS 和 JavaScript 是构建外卖小程序界面的主要技术。 <!-- HTML 结构示例 --> <header><h1>外卖小程序</h1><!-- 其他导航元素 --> </header> <main><!-- 菜单显示 -…...

ubuntu安装配置svn

目录 简介安装SVN 启动模式方式1:单库svnserve方式方式2:多库svnserve方式 SVN 创建版本库1.svn 服务配置文件 svnserve.conf2.用户名口令文件 passwd3.权限配置文件4.多库方式运行 SVN 检出操作SVN 解决冲突SVN 提交操作SVN 版本回退SVN 查看历史信息1.svn log2.svn diff3.svn…...

『Jmeter入门万字长文』 | 从环境搭建、脚本设计、执行步骤到生成监控报告完整过程

『Jmeter入门万字长文』 | 从环境搭建、脚本设计、执行步骤到生成监控报告完整过程 1 Jmeter安装1.1 下载安装1.2 Jmeter汉化1.2.1 临时修改1.2.2 永久修改 1.3 验证环境 2 测试对象2.1 测试对象说明2.2 测试对象安装2.2.1 下载安装2.2.2 启动测试对象服务2.2.3 访问测试对象2.…...

Unity C#中LuaTable、LuaArrayTable、LuaDictTable中数据的增删改查

LuaTable、LuaArrayTable、LuaDictTable中数据的增删改查 介绍Lua表lua表初始化lua移除引用lua中向表中添加数据lua中表中移除数据lua表中连接数据lua表中数据排序获取lua表长度获取表中最大值 UnityC#中LuaTableUnityC#中LuaArrayTable、LuaDictTable、LuaDictTable<K,V>…...

Spring常见面试题

https://blog.csdn.net/a745233700/article/details/80959716?ops_request_misc%257B%2522request%255Fid%2522%253A%2522169847982516800213061720%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id169847982516800213061720&biz_id0&…...

通过Vue自带服务器实现Ajax请求跨域(vue-cli)

通过Vue自带服务器实现Ajax请求跨域&#xff08;vue-cli&#xff09; 跨域 原理&#xff1a;从A页面访问到B页面&#xff0c;并且要获取到B页面上的数据&#xff0c;而两个页面所在的端口、协议和域名中哪怕有一个不对等&#xff0c;那么这种行为就叫跨域。注意&#xff1a;类…...

Vue2-计算属性的用法

题记 vue2计算属性的用法 反转字符串 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>实例</title> <script src"https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script> </hea…...

SM3加密udf

SM3加密udf maven xml <dependencies> <!-- 配置日志 --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.5</version> </dep…...

ce从初阶到大牛(两台主机免密登录)

一、配置ssh远程连接 实现两台linux主机之间通过公钥验证能够互相实现免密登陆 1.确认服务程序是否安装 rpm -qa | grep ssh 2.是否启动 ps -aux | grep ssh 3.生成非对称公钥 ssh-keygen -t rsa 4.公钥发送到客户端 cd /root/.ssh/ ssh-copy-id root192.168.170.134 因为…...

CS224W2.3——传统基于特征的方法(图层级特征)

前两篇中我们讨论了节点层级的特征表示、边层级的特征表示&#xff1a; CS224W2.1——传统基于特征的方法(节点层级特征)CS224W2.2——传统基于特征的方法(边层级特征) 在这篇中&#xff0c;我们将重点从整个图中提取特征。换句话说&#xff0c;我们想要描述整个图结构的特征…...

无需下载ps,用快马5分钟打造你的第一个在线图像处理工具原型

最近想学点图像处理&#xff0c;但一看到PS那庞大的安装包和复杂的界面就头疼。直到发现用InsCode(快马)平台可以快速搭建网页版图像处理工具&#xff0c;不用下载任何软件&#xff0c;5分钟就能做出功能原型&#xff0c;特别适合验证创意或临时处理图片。分享下我的实现过程&a…...

避坑指南:在Windows/Linux上部署YOLOv8+PaddleOCR车牌识别项目的完整流程

避坑指南&#xff1a;在Windows/Linux上部署YOLOv8PaddleOCR车牌识别项目的完整流程 车牌识别系统作为智能交通的核心组件&#xff0c;正从专业领域向开发者社区渗透。许多技术团队在尝试复现YOLOv8PaddleOCR方案时&#xff0c;往往卡在环境配置、依赖冲突等基础环节。本文将手…...

Obsidian图片本地化终极指南:3步打造永不失效的笔记图片库

Obsidian图片本地化终极指南&#xff1a;3步打造永不失效的笔记图片库 【免费下载链接】obsidian-local-images-plus This repo is a reincarnation of obsidian-local-images plugin which main aim was downloading images in md notes to local storage. 项目地址: https:…...

开发者专属:OpenClaw+Qwen3-4B实现日志分析与异常告警

开发者专属&#xff1a;OpenClawQwen3-4B实现日志分析与异常告警 1. 为什么开发者需要自动化日志监控&#xff1f; 上周三凌晨两点&#xff0c;我被手机铃声惊醒——线上服务突然崩溃。当我手忙脚乱连上VPN查看日志时&#xff0c;发现关键错误其实在6小时前就已经出现。这个痛…...

网站 SEO 优化需要注意哪些 Google 算法更新

网站 SEO 优化需要注意哪些 Google 算法更新 在当今的数字营销环境中&#xff0c;网站 SEO 优化是每一个企业和个人网站所必须掌握的技能之一。随着 Google 算法的不断更新&#xff0c;SEO 策略也需要不断调整和优化。在这个快速变化的环境中&#xff0c;我们需要注意哪些 Goo…...

如何在3分钟内免费解决Windows查看iPhone照片的终极难题:HEIC缩略图完全指南

如何在3分钟内免费解决Windows查看iPhone照片的终极难题&#xff1a;HEIC缩略图完全指南 【免费下载链接】windows-heic-thumbnails Enable Windows Explorer to display thumbnails for HEIC/HEIF files 项目地址: https://gitcode.com/gh_mirrors/wi/windows-heic-thumbnai…...

多模态AI新玩法:EVA-01帮你读懂复杂图表,做汇报、写分析效率翻倍

多模态AI新玩法&#xff1a;EVA-01帮你读懂复杂图表&#xff0c;做汇报、写分析效率翻倍 1. 引言&#xff1a;当数据可视化遇上AI"全知之眼" 在商业分析和学术研究的日常工作中&#xff0c;我们经常面临这样的困境&#xff1a;精心制作的图表被误解&#xff0c;关键…...

bge-large-zh-v1.5在RAG中的应用:sglang快速部署,提升问答准确率

bge-large-zh-v1.5在RAG中的应用&#xff1a;sglang快速部署&#xff0c;提升问答准确率 1. bge-large-zh-v1.5模型概述 bge-large-zh-v1.5是一款专为中文优化的嵌入模型&#xff0c;在检索增强生成&#xff08;RAG&#xff09;系统中发挥着关键作用。该模型通过深度学习技术…...

快速上手:实时口罩检测-通用模型,从安装到检测只需10分钟

快速上手&#xff1a;实时口罩检测-通用模型&#xff0c;从安装到检测只需10分钟 1. 引言&#xff1a;为什么选择这个口罩检测模型 在公共场所管理、智能门禁系统或健康监测应用中&#xff0c;准确快速地检测人员是否佩戴口罩是一个常见需求。传统方案往往需要复杂的部署流程…...

CogVideoX-2b部署经验:多卡环境下负载均衡配置方法

CogVideoX-2b部署经验&#xff1a;多卡环境下负载均衡配置方法 1. 引言&#xff1a;为什么需要多卡负载均衡 当您开始使用CogVideoX-2b进行视频生成时&#xff0c;可能会遇到一个常见问题&#xff1a;单张显卡生成视频需要2-5分钟&#xff0c;而且GPU占用率极高&#xff0c;无…...