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()

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

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

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

相关文章

【算法思想04】二分查找

文章目录 1. 基本思想与实现1.1 基本思想1.2 值m的计算方式1.3 查找失败时的返回值1.4 代码实现1.4.1 循环1.4.2 递归 2. 性能分析2.1 时间复杂度2.2 与顺序查找的效率比较 3. 应用3.1 前提3.2 变体3.2.1 最基本的二分查找3.2.2 寻找左侧边界的二分查找3.2.3 寻找右侧边界的二分…

【brainpan靶场渗透】

文章目录 一、基础信息 二、信息收集 三、反弹shell 四、提权 一、基础信息 Kali IP:192.168.20.146 靶机 IP:192.168.20.155 二、信息收集 似乎开放了9999,10000端口,访问页面没有太多内容,扫描一下目录 dirs…

matlab reshape permute

1.reshape 将向量按照顺序重新构建 矩阵,新矩阵 先排完第一列, 再第二列… 2.permute 将向量 维度变换

comctl32.dll没有被指定在window运行怎么解决?

一、文件丢失问题:comctl32.dll没有被指定在Windows上运行怎么解决? comctl32.dll是Windows操作系统中的一个重要组件,它负责提供用户界面元素,如按钮、对话框和列表视图等。当系统提示“comctl32.dll没有被指定在Windows上运行”…

Qt下使用AES进行字符串加密解密

文章目录 前言一、获取QAESEncryption库二、加密与解密实现三、示例完整代码四、下载链接总结 前言 引用:AES(Advanced Encryption Standard)是一种对称加密算法,被广泛用于数据加密,提供128、192、256位三种密钥长度&…

docker 安装minio

docker pull minio/minio #启动 mkdir -p /root/minio/config mkdir -p /root/minio/datadocker run -d \--name minio \-p 9002:9000 \-p 9001:9001 \--restartalways \-v /root/minio/data:/data \-v /root/minio/config:/root/.minio \-e "MINIO_ACCESS_KEYminioadmin…

Linux系统下安装配置 Nginx 超详细图文教程

一、下载Nginx安装包 nginx官网:nginx: download[这里是图片001]http://nginx.org/en/download.html 找到我们所需要版本,把鼠标移动到上面,右键打开链接进行下载 或者如果Linux联网,直接在Linux服务上使用wget命令把Nginx安装包…

爬虫与反爬虫实现全流程

我选取的网页爬取的是ppt nba版 需要的工具:pycharm,浏览器 爬虫需要观察它的网页信息,然后开始首先爬取它的html,可以看到有人气,标题,日期,咨询 可以看到用get方法 import requests url"https://img-home.csdnimg.cn/images/20230724024159.png?origin_urlhttps%3A%2…

最新版Edge浏览器加载ActiveX控件技术——alWebPlugin中间件V2.0.28-迎春版发布

allWebPlugin简介 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品,致力于将浏览器插件重新应用到所有浏览器。它将现有ActiveX控件直接嵌入浏览器,实现插件加载、界面显示、接口调用、事件回调等。支持Chrome、Firefo…

OSPFv2协议状态切换(状态机)基本原理-RFC2328

个人认为,理解报文就理解了协议。通过报文中的字段可以理解协议在交互过程中相关传递的信息,更加便于理解协议。 自动换行 OSPFv2: 关于 OSPFv2 协议基本原理,可参考RFC2328-OSPF Version 2。 其他相关资料可参考: …

【最新】沃德协会管理系统源码+uniapp前端+环境教程

一.系统介绍 一款基于FastAdminThinkPHPUniapp开发的商协会系统,新一代数字化商协会运营管理系统,以“智慧化会员体系、智敏化内容运营、智能化活动构建”三大板块为基点,实施功能全场景覆盖,一站式解决商协会需求壁垒&#xff0…

【LeetCode: 83. 删除排序链表中的重复元素 + 链表】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

算法练习——模拟题

前言:模拟题的特点在于没有什么固定的技巧,完全考验自己的代码能力,因此有助于提升自己的代码水平。如果说一定有什么技巧的话,那就是有的模拟题能够通过找规律来简化算法。 一:替换所有问号 题目要求: 解…

Idea创建JDK17的maven项目失败

Idea创建JDK17的maven项目失败 Error occurred during initialization of VM Could not find agent library instrument on the library path, with error: Can’t find dependent libraries Possible solution: Check your maven runner VM options. Open Maven Runner setti…

VSCode设置Playwright教程

1.安装扩展 打开VS Code,在扩展—>搜索"Playwright Test for VSCode",点击安装 按快捷键CommandShiftP,输入install playwright,点击安装Playwright 安装成功会有如下提示 2.调试脚本 打开tests/example.spec.ts文…

HTML新特性|01 音频视频

音频 1、Audio (音频) HTML5提供了播放音频文件的标准 2、control(控制器) control 属性供添加播放、暂停和音量控件 3、标签: <audio> 定义声音 <source> 规定多媒体资源,可以是多个<!DOCTYPE html> <html lang"en"> <head><…

【深度学习】卷积网络代码实战ResNet

ResNet (Residual Network) 是由微软研究院的何凯明等人在2015年提出的一种深度卷积神经网络结构。ResNet的设计目标是解决深层网络训练中的梯度消失和梯度爆炸问题&#xff0c;进一步提高网络的表现。下面是一个ResNet模型实现&#xff0c;使用PyTorch框架来展示如何实现基本的…

雷电「模拟器」v9 最新清爽去广

前言 雷电模拟器9是基于安卓9内核开发的全新版本模拟器 安装环境 [名称]&#xff1a;雷电「模拟器」 [大小]&#xff1a;579MB [版本]&#xff1a;9.1.34 [语言]&#xff1a;简体中文 [安装环境]&#xff1a;Windows 通过网盘分享的文件&#xff1a;雷电模拟器 链接:…

大模型 API 接入初探

文章目录 大模型 API 接入初探一、使用大模型 API 的前置步骤&#xff08;一&#xff09;注册账户与获取凭证&#xff08;二&#xff09;理解 API 文档 二、三个常用 API&#xff08;一&#xff09;列出模型&#xff08;二&#xff09;FIM 补全&#xff08;三&#xff09;对话补…

实时在线翻译谷歌插件

Real - time Translation插件的安装 1、下载插件并解压 2、打开谷歌浏览器&#xff0c;在地址栏输入 “chrome://extensions/” 进入扩展程序页面. 3、开启页面右上角的 “开发者模式”. 4、点击 “加载已解压的扩展程序” 按钮&#xff0c;选择之前解压的文件夹&#xff0c;点…