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

Opencv之对图片的处理和运算

Opencv实现对图片的处理和修改

目录

  • Opencv实现对图片的处理和修改
    • 灰度图
      • 读取灰度图
      • 转换灰度图
    • RBG图
      • 单通道图
        • 方法一
        • 方法二
      • 单通道图显色
      • 合并单通道图
    • 图片截取
    • 图片打码
    • 图片组合
    • 缩放
      • 格式1
      • 格式2
    • 图像运算
      • +
        • 图像+m
        • a[m:n,x:y]+b[m1:n1,x1:y1]
      • add
      • 加权运算

灰度图


读取灰度图

  • imread(‘地址’,cv2.IMREAD_GRAYSCALE)
    灰度图
  • imread(‘地址’,0)
    灰度图
  • imwrite(‘地址’,图片变量)
    图片保存

代码展示:

b = cv2.imread('at1.png',cv2.IMREAD_GRAYSCALE)
cv2.imshow('gry',b)
w = cv2.waitKey(100000)
c= cv2.imread('at1.png',0)
cv2.imshow('gry_0',c)
cv2.waitKey(100000)
cv2.imwrite('at1_gry.png',b)

运行结果:
在这里插入图片描述

转换灰度图

  • cv2.CvtColor(图像变量,cv2.COLOR_BGR2GRAY)
    灰度图

代码展示:

a = cv2.imread('at1.png')
cv2.imshow('t1',a)
cv2.waitKey(100000)
b = cv2.cvtColor(a,cv2.COLOR_BGR2GRAY)
cv2.imshow('t2',b)
cv2.waitKey(100000)

运行结果:
在这里插入图片描述

RBG图


单通道图

单通道图不表现颜色,表现为灰色

方法一
  • 图片变量名[:,:,n]
    n值为0、1、2,分别是B、G、R单通道图

代码展示:

a = cv2.imread('at1.png')
a_b = a[:,:,0]
cv2.imshow('a_b',a_b)
cv2.waitKey(100000)
a_g = a[:,:,1]
cv2.imshow('a_g',a_g)
cv2.waitKey(100000)
a_r = a[:,:,2]
cv2.imshow('a_r',a_r)
cv2.waitKey(100000)

运行结果:
在这里插入图片描述

方法二

b,g,r = 图像变量.split()

代码展示:

a = cv2.imread('at1.png')
b,g,r = cv2.split(a)
cv2.imshow('r',r)
cv2.waitKey(10000)

运行结果:
在这里插入图片描述

单通道图显色

图片变量名[:,:,n] = 0

运行代码:

a = cv2.imread('at1.png')
a_new = a.copy()
a_new[:,:,2] = 0
cv2.imshow('a_new',a_new)
cv2.waitKey(10000)

运行结果:
在这里插入图片描述

合并单通道图

merge((b,g,r))

代码展示:

a = cv2.imread('at1.png')
b,g,r = cv2.split(a)
cv2.imshow('r',r)
cv2.waitKey(10000)
m = cv2.merge((b,g,r))
cv2.imshow('b_g_r',m)
cv2.waitKey(10000)

运行结果:
在这里插入图片描述

图片截取


a[m:n,x:y]高,宽
截取部分图像
代码展示:

a = cv2.imread('at1.png')
cv2.imshow('c',a)
cv2.waitKey(10000)
b = a[100:300,100:300]
cv2.imshow('a_m',b)
cv2.waitKey(10000)

运行结果:
在这里插入图片描述

图片打码


需要导入numpy

  • a[m:n,x:y] = np.random.randint(0,256,(m-n,x-y,3))
  • 0-256,256不取,实为0-255,

代码展示:

a = cv2.imread('at1.png')
a[100:200,100:200] = np.random.randint(0,256,(100,100,3))
cv2.imshow('c',a)
cv2.waitKey(10000)

运行结果:
在这里插入图片描述

图片组合


  • b[m:n,x:y] = a[m:n,x:y]
    a在b中,大小要一致

代码展示:

a = cv2.imread('at1.png')
b = cv2.imread('at1_gry.png')
b[100:200,100:300] = a[100:200,100:300]
cv2.imshow('a_b',b)
cv2.waitKey(10000)

运行结果:
在这里插入图片描述

缩放


格式1

  • resize(a,dsize=None,fx=m,fy=n)
    fx,fy表示等比如0.5对宽高缩放

格式2

cv2.resize(a,(m,n))

图像大小为m宽,n高,

代码展示:

a = cv2.imread('at1.png')
cv2.imshow('a',a)
cv2.waitKey(10000)
a_small = cv2.resize(a,dsize=None,fx=0.5,fy=0.5)
cv2.imshow('a_small',a_small)
cv2.waitKey(10000)
b_small = cv2.resize(a,(250,300))
cv2.imshow('b_small',b_small)
cv2.waitKey(10000)
cv2.destroyAllWindows()

运行结果:
在这里插入图片描述

图像运算


图像大小都要一致

+

图像+m

m为数组,当像素值大于255时,该值-256为最终值

a[m:n,x:y]+b[m1:n1,x1:y1]

间隔大小要相同,当像素值大于255时,该值-256为最终值
代码展示:

a = cv2.imread('at1.png')
b = cv2.imread('bt1.jpg')
c = a + 10
cv2.imshow('a',a)
cv2.waitKey(10000)
cv2.imshow('b',b)
cv2.waitKey(10000)
cv2.imshow('a+10',c)
cv2.waitKey(10000)
d = a[100:300,100:300] + b[100:300,100:300]
cv2.imshow('a+b',d)
cv2.waitKey(10000)

运行结果:
在这里插入图片描述

add

add(a,b)
a,b大小要相同
当a,b的像素值相加,像素值大于255时,该值为255

代码展示:

 a = cv2.imread('at1.png')
b = cv2.imread('bt1.jpg')
a = cv2.resize(a,(400,400))
b = cv2.resize(b,(400,400))
e = cv2.add(a,b)
cv2.imshow('a_add_b',e)
cv2.waitKey(10000)

运行结果:
在这里插入图片描述

加权运算

addWeighted(a,占比,b,占比,0)
a,b大小相同,按占比显示

代码展示:

a = cv2.imread('at1.png')
b = cv2.imread('bt1.jpg')
a = cv2.resize(a,(400,400))
b = cv2.resize(b,(400,400))
f = cv2.addWeighted(a,0.5,b,0.5,0)
cv2.imshow('a_addweighted_b',f)
cv2.waitKey(10000)
cv2.destroyAllWindows()

运行结果:
在这里插入图片描述

相关文章:

Opencv之对图片的处理和运算

Opencv实现对图片的处理和修改 目录 Opencv实现对图片的处理和修改灰度图读取灰度图转换灰度图 RBG图单通道图方法一方法二 单通道图显色合并单通道图 图片截取图片打码图片组合缩放格式1格式2 图像运算图像ma[m:n,x:y]b[m1:n1,x1:y1] add加权运算 灰度图 读取灰度图 imread(‘…...

使用Excel制作通达信自定义“序列数据“

序列数据的视频教程演示 Excel制作通达信自定义序列数据 1.序列数据的制作方法:删掉没有用的数据(行与列)和股代码格式处理,是和外部数据的制作方法是相同,自己上面看历史博文。只需要判断一下,股代码跟随的…...

Qt工作总结02 <设置工具栏ToolBar>

相关博文 1. 代码 QToolBar * toolbar new QToolBar(this);QAction * btn1 new QAction("btn1"); btn1->setIcon(QIcon(":/images/btn1.png")); value->setCheckable(true); //按钮按下弹起 toolbar ->addAction(btn1);QAction * btn2 new …...

解决Springboot整合Shiro自定义SessionDAO+Redis管理会话,登录后不跳转首页

解决Springboot整合Shiro自定义SessionDAORedis管理会话,登录后不跳转首页 问题发现问题解决 问题发现 在Shiro框架中,SessionDAO的默认实现是MemorySessionDAO。它内部维护了一个ConcurrentMap来保存session数据,即将session数据缓存在内存…...

Day56 图论part06

108.冗余连接 并查集应用类题目,关键是如何把题意转化成并查集问题 代码随想录 import java.util.Scanner;public class Main{public static void main (String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();DisJoint disjoint = new DisJo…...

[python SQLAlchemy数据库操作入门]-04.连接数据库:增删改查

哈喽,大家好,我是木头左! 通过使用 SQLAlchemy,开发者可以在 Python 中以更直观的方式操作数据库,而无需编写大量的 SQL 代码。 创建数据库引擎 在 SQLAlchemy 中,数据库引擎是用于与数据库交互的核心组件。它负责管理数据库连接,并执行 SQL 语句。 示例:连接到 SQLi…...

黑马点评——基于Redis

目录 1.短信登录 1.1基于Session登录(已被Redis代替) 1.2cookie和session 2.添加Redis缓存 2.1根据id查询商户信息 2.2缓存穿透 2.3缓存雪崩 《黑马点评》Redis高并发项目实战笔记【完结】P1~P72_黑马点评笔记-CSDN博客 1.短信登录 1.1基于Sess…...

RocketMQ的集群架构是怎样的?

大家好,我是锋哥。今天分享关于【RocketMQ的集群架构是怎样的?】面试题。希望对大家有帮助; RocketMQ的集群架构是怎样的? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 RocketMQ 是阿里巴巴开源的分布式消息中间件,广泛用于处…...

VS2022+QT6.7 窗口置灰(遮罩)

本文章使用QWidget来使窗口置灰,使用按钮控制置灰功能的开启和关闭,同时被置灰的控件自动禁用交互功能。 connect(ui.pushButton_open, &QPushButton::clicked, this, []() { //创建无边框窗口,大小是父的大小QWidget* parentWidget new QWidget…...

如何通过HTTP API插入或更新Doc

本文介绍如何通过HTTP API向Collection中插入或更新Doc。 说明 若调用本接口时Doc Id已存在,则等同于更新Doc;Doc Id不存在,则等同于插入Doc。 若调用本接口时不指定Doc Id,则等同于插入Doc,DashVector会自动生成Doc …...

C++ STM32 F4xx USART LL库 DMA + IDLE ISR 驱动裸机 +FreeRTOS 任务通知

写的一般,大佬可以帮我看看 头文件 /********************************************************************************* file : usart_driver.hpp* brief : usart_driver program head**************************************************…...

RK3588在Android13/14如何查看GPU,NPU,DDR,RGA数据

由于Android13上selinux的权限管控加强,原来android12的方法已经无法获取到性能相关数据了,故单独介绍Android13上的性能数据获取 首先需要保障能过获取到root权限,adb root能够生效,adb shell进入shell命令行 mount -t debugfs…...

sentinel学习笔记6-限流降级(上)

本文属于sentinel学习笔记系列。网上看到吴就业老师的专栏,写的好值得推荐,我整理的有所删减,推荐看原文。 https://blog.csdn.net/baidu_28523317/category_10400605.html sentinel 实现限流降级、熔断降级、黑白名单限流降级、系统自适应…...

【Rust自学】6.4. 简单的控制流-if let

喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 6.4.1. 什么是if let if let语法允许将if和let组合成一种不太冗长的方式来处理与一种模式匹配的值,同时忽略其余模式。 可以…...

【HarmonyOS】鸿蒙将资源文件夹Resource-RawFile下的文件存放到沙箱目录下

【HarmonyOS】鸿蒙将资源文件夹Resource-RawFile下的文件存放到沙箱目录下 一、问题背景 应用开发中,我们经常会遇到一些文件原先是放在资源文件夹 rawfile下,但是逻辑处理时,需要转移到本地沙箱才能操作。这种情况下,就需要将将…...

Vue项目中env文件的作用和配置

在实际项目的开发中,我们一般会经历项目的开发阶段、测试阶段和最终上线阶段,每一个阶段对于项目代码的要求可能都不尽相同,那么我们如何能够游刃有余的在不同阶段下使我们的项目呈现不同的效果,使用不同的功能呢?这里…...

在 Vue3 项目中实现计时器组件的使用(Vite+Vue3+Node+npm+Element-plus,附测试代码)

一、概述 记录时间 [2024-12-26] 本文讲述如何在 Vue3 项目中使用计时器组件。具体包括开发环境的配置,ViteVue 项目的创建,Element Plus 插件的使用,以及计时器组件的创建和使用。 想要直接实现计时器组件,查看文章的第四部分。…...

机器人C++开源库The Robotics Library (RL)使用手册(三)

进入VS工程,我们先看看这些功能函数及其依赖库的分布关系: rl命名空间下,主要有八大模块。 搞定VS后将逐个拆解。 1、编译运行 根据报错提示,配置相应错误的库(根据每个人安装位置不同而不同,我的路径如下:) 编译所有,Release版本耗时大约10分钟。 以rlPlan运动…...

Photoshop启动错误:找不到MSVCP140.dll的多步骤解决指南

在使用Adobe Photoshop(简称PS)进行创意设计或图像编辑时,有时会遇到软件启动报错的情况,其中“找不到MSVCP140.dll,无法继续执行代码”是一个常见的错误提示。这个错误通常意味着你的系统缺少了Microsoft Visual C Re…...

mac中idea菜单工具栏没有git图标了

1.右击菜单工具栏 2.选中VCS,点击添加 3.搜索你要的工具,选中点击确定就添加了 4.回到上面一个界面,选中你要放到工具栏的工具,点击应用就好了 5.修改图标,快捷键或者右击选中编辑图标 6.选择你要的图标就好了...

突破Emby功能限制:emby-unlocked的技术实现与应用指南

突破Emby功能限制:emby-unlocked的技术实现与应用指南 【免费下载链接】emby-unlocked Emby with the premium Emby Premiere features unlocked. 项目地址: https://gitcode.com/gh_mirrors/em/emby-unlocked 在媒体服务器领域,Emby作为一款功能…...

2026虚拟主播动作创作工具专业选型指南,新手也能精准选对

虚拟主播产业的快速发展,推动动作创作工具向高效化、轻量化、专业化升级。随着虚拟主播行业的规范化发展,动作创作的效率与质量成为核心竞争力,传统手动绑定、专业设备驱动的模式已无法满足批量产出需求。本文基于实测数据,结合虚…...

如何用OpenRPA实现企业级流程自动化?开源RPA工具完整指南

如何用OpenRPA实现企业级流程自动化?开源RPA工具完整指南 【免费下载链接】openrpa Free Open Source Enterprise Grade RPA 项目地址: https://gitcode.com/gh_mirrors/op/openrpa 在数字化转型浪潮中,企业面临着效率瓶颈与成本压力的双重挑战。…...

Arduino超声波测距库:基于外部中断的非阻塞HC-SR04驱动

1. 项目概述iarduino_HC_SR04_int是一款专为 Arduino IDE 设计的超声波测距传感器驱动库,面向 HC-SR04 模块提供高精度、非阻塞式距离测量能力。该库并非简单封装pulseIn()的轮询实现,而是基于硬件级外部中断机制构建,从根本上解决了传统超声…...

开源项目 Homelab 使用教程

开源项目 Homelab 使用教程 项目介绍 Homelab 是一个开源项目,旨在帮助用户构建和管理自己的家庭实验室。该项目提供了一套完整的工具和配置,使用户能够轻松地部署和管理各种服务和应用。Homelab 项目由 khuedoan 开发,基于 Kubernetes 和其他…...

颠覆屏幕翻译体验:Screen Translator创新技术重构多语言信息获取方式

颠覆屏幕翻译体验:Screen Translator创新技术重构多语言信息获取方式 【免费下载链接】ScreenTranslator Screen capture, OCR and translation tool. 项目地址: https://gitcode.com/gh_mirrors/sc/ScreenTranslator 在全球化协作日益频繁的今天&#xff0c…...

5分钟搞定:造相-Z-Image-Turbo亚洲美女LoRA服务搭建与测试

5分钟搞定:造相-Z-Image-Turbo亚洲美女LoRA服务搭建与测试 1. 项目概述 造相-Z-Image-Turbo亚洲美女LoRA是一个基于Z-Image-Turbo模型的图片生成Web服务,特别集成了laonansheng开发的Asian-beauty-Z-Image-Turbo-Tongyi-MAI-v1.0 LoRA模型,…...

Ivanti EPMM RCE CVE-2026-1340/1281完整分析

介绍:近日,Ivanti公司披露了Ivanti Endpoint Manager Mobile (EPMM)中存在的代码注入漏洞(CVE-2026-1281和CVE-2026-1340),并确认已存在在野利用。该漏洞源于 Apache HTTPd 调用的 Bash 脚本在处理时间戳比较时,未能有效过滤恶意参数&#xf…...

2025_NIPS_RT V-Bench: Benchmarking MLLM Continuous Perception, Understanding and Reasoning through R

文章主要内容与创新点总结 一、主要内容 本文针对现有基准测试无法充分评估多模态大语言模型(MLLMs)在动态真实环境中持续感知、理解和推理能力的问题,提出了实时视频分析基准测试集RT V-Bench。该基准包含552个多样化视频(总时长167.2小时)和4631个高质量问答对,涵盖智…...

杰理之进入ANC模式播歌,ANC效果变通透【篇】

需与工具ANC配置中dac_gain参数保持一致...