opencv的图像基本操作(基于jupyter Notebook)

news2024/11/28 4:27:33

opencv的基本操作

cv2是opencv在python中的缩写,函数开头用cv2

cv2.imread('cat.jpg') #读入图片cat.jpg

cv2.imwrite('mycat.png',img) #图片img保存为mycat.png

cv2.imshow('image',img) #创建窗口,显示图像

cv2.waitKey(10000) #等待时间,以 毫秒为单位,“0”表示任意键中止

cv2.destroyAllWindows()

img.shape #查看img的尺寸

- cv2.IMREAD_COLOR:彩色图像

- cv2.IMREAD_GRAYSCALE:灰度图像

img=cv2.imread('cat.jpg',cv2.IMREAD_GRAYSCALE) #读入cat.jpg灰色图像,存到img

img.size #图片img的尺寸

读取视频 cv2.VideoCapture('test.mp4')

vc = cv2.VideoCapture('test.mp4') #读取视频test.mp4到vc

cat = img[0:200,0:200] #截取图片img,0:200,0:200

b,g,r = cv2.split(img) #img图片提取为b,g,r三个颜色通道

img = cv2.merge((b,g,r)) #(b,g,r)三个颜色通道合成图片image

#只保留r通道,cur_img[:,:,0]的格式

cur_img = img.copy() #复制img到cur_img

cur_img[:,:,0] = 0 #图片cur_img的b通道为0

cur_img[:,:,1] = 0 #图片cur_img的g通道为0

cv_show('img',cur_img) #显示只保留r通道的图片cur_img

下面图形包含六幅猫,如何将六幅图合并到一起展示呢?

使用subplot()绘制图形

subplot(numRows, numCols, numPlots)

图形划分成numRows行,numCols列;上图为2行3列,numRows=2,numCols=3;

左上角编号从1开始,从左到右,从上到下依次编号

numPlots是你要绘制子图的编号;

subplot(2, 3, 3)

图片坐标为 (1,1),(1,2),(1,3)

(2,1),(2,2),(2,3)

要绘制2行3列的图形,要绘制的图形编号为3,坐标为(1,3),是图REFLECT。

【注意】如果numRows, numCols, numPlots这三个数字都小于10,可以缩写为一个整体。

【例子】subplot(231)和subplot(2,3,1)相同

图像运算

两个图形shape值相同才能运算,使用resize()调整图像shape相同。

img_cat2 = img_cat + 10 #在img_cat图像上+10,表示所有像素点亮度值加10

img_cat2[:5, :, 0] #显示img_cat2,“:5”指前5行,中间的“:”是所有列,“0”是第一个通道

(img_cat + img_cat2)[:5, :, 0] #相当于%256

cv2.add(img_cat, img_cat2)[:5, :, 0] #img_cat+img_cat2,像素点数值超过255,取255

图像变换

img_dog = cv2.resize(img_dog, (500, 414)) # img_dog图像尺寸转换为(414,500)

res = cv2.addWeighted(img_cat, 0.4, img_dog, 0.5, 0) #img_cat和 img_dog加权相加

res = cv2.resize(img_cat, (0,0), fx = 3, fy = 4) #图像伸缩变换,x变为3倍,y变为4倍

res = cv2.resize(img_cat, (0,0), fx = 1, fy =3) #x是1倍,y是3倍

【注意】

  1. notebook中shift+Enter执行代码

  1. 输入法英文输入状态,写代码,字符单引号'',字符串双引号"",括号()

输入法汉字输入状态,写注释,字符串的内容"XXXX"

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

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

相关文章

整数分解

问题描述 将 3 分解成两个正整数的和, 有两种分解方法, 分别是 312312 和 321321 。注意顺序不同算不同的方法。 将 5 分解成三个正整数的和, 有 6 种分解方法, 它们是 113122113122 131212221311131212221311 。 请问, 将 2021 分解成五个正整数的和, 有多少种分解方法? …

Android大厂面试100题,涵盖测试技术、环境搭建、人力资源

测试技术面试题 1、什么是兼容性测试?兼容性测试侧重哪些方面? 2、我现在有个程序,发现在Windows上运行得很慢,怎么判别是程序存在问题还是软硬件系统存在问题? 3、测试的策略有哪些? 4、正交表测试用例…

Sinutrain下载安装与开启OPC UA---kalrry

Sinumerik下载安装与开启OPC UA---kalrry前言一、安装前准备二、Win7安装1、软件安装2、开启授权3、文件配置4、客户端连接三、Win10/11安装四、启动后使用前言 本教程只适用于 Sinutrain-v4.7 版本,其他版本配置目录有所改变建议安装到默认路径,否则后…

【云原生】k8s安全机制

内容预知 前言 1. 认证(Authentication) 1.1 k8s集群内的三种认证方式 1.2 k8s集群内的认证说明 (1)需要被认证的访问类型 (2)安全性说明 (3)证书颁发的方式 (4&a…

Qt中使用qt自带的函数实现各种进制间的相互转换,easy.

文章目录一.十进制转各种进制第一种:使用QString的静态函数number第二种:使用QString的拼接函数arg二.各种进制相互转换一.十进制转各种进制 第一种:使用QString的静态函数number ①使用QString的静态函数number即可,如我把字符…

嵌入式linux-进程状态与进程关系

1. 进程状态 1.1什么是进程状态 Linux 系统下进程通常存在 6 种不同的状态,分为:就绪态、运行态、僵尸态、可中断睡眠状态(浅度 睡眠)、不可中断睡眠状态(深度睡眠)以及暂停态。 下面我们来一一总结一下&…

数据湖之Hudi基础:入门介绍和编译部署

主要记录下Hudi的概述和打包编译等内容,方便参考 文章目录简介官网发展历史Hudi特性使用场景安装部署编译环境准备编译hudi1.源码包上传到服务器2.修改pom文件3.修改源码兼容hadoop34.手动安装kafka依赖(非必须)5.解决spark模块依赖冲突6.执行…

【基础篇】4 # 链表(上):如何实现LRU缓存淘汰算法?

说明 【数据结构与算法之美】专栏学习笔记 链表结构 数组需要一块连续的内存空间来存储,对内存的要求比较高, 而链表并不需要一块连续的内存空间,它通过指针将一组零散的内存块串联起来使用。 结点:指的是内存块后继指针 next…

Postgresql源码(98)lex与yacc的定制交互方式

1 背景知识一:LEX %option prefix Postgresql中使用%option prefix"core_yy",影响范围:yy_create_buffer,yy_delete_buffer,yy_flex_debug,yy_init_buffer,yy_flush_buffer,yy_load_buffer_state,yy_switch_to_buffer,yyin,yyleng…

【并发编程十一】c++线程同步——future

【并发编程十一】c线程同步——future一、互斥二、条件变量三、future1、promise1.1、子线程设值,主线程获取1.2、主线程设置值,子线程获取1.3、shared_future2、async2.1、不开新线程的async2.2、开新线程的async3、packaged_task3.1、不使用bind3.2、提…

Kafka-概述

一、Kafka是什么 1.定义 Apache Kafka 是一款开源的消息引擎系统。 消息引擎系统是一组规范。企业利用这组规范在不同系统之间传递语义准确的消息,实现松耦合的异步式数据传递。 二、消息队列的使用场景 传统消息队列的应用场景包括 缓存/削峰、解耦、异步通信 …

vue(透传属性,$attrs)

官方文档 https://cn.vuejs.org/guide/components/attrs.html 案例 <FirstLevel class"attr-test-class" name"zs" age"18"></FirstLevel>FirstLevel组件没有用props去申明name和age&#xff0c;所以这两个属性会透视传递。 <…

RT-Thread系列--组件初始化

一、目的RT-Thread里面有个特别有意思的软件设计叫做组件自动初始化。有些小伙伴可能是第一次听说&#xff0c;所以这边我解释一下&#xff0c;请看下面的代码片段static void clock_init() {// 时钟初始化 } static void uart_init() {// 串口初始化 } static void i2c_init()…

SpringBoot自定义拦截器

&#x1f341;博客主页&#xff1a;&#x1f449;不会压弯的小飞侠 ✨欢迎关注&#xff1a;&#x1f449;点赞&#x1f44d;收藏⭐留言✒ ✨系列专栏&#xff1a;&#x1f449;SpringBoot专栏 &#x1f525;欢迎大佬指正&#xff0c;一起学习&#xff01;一起加油&#xff01; …

JavaScript 浏览器的重排和重绘

文章目录JavaScript 浏览器的重排和重绘概述浏览器解析过程重排重绘优化将多次改变样式的属性操作合并为一次需要多次重排的元素设置为绝对定位减少DOM操作复杂元素处理先设置display为none处理完后再显示缓存频繁操作的属性减少使用table布局使用事件委托绑定事件处理程序利用…

上海亚商投顾:沪指重返3200点 牛市旗手回归!

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。市场情绪三大指数今日继续走强&#xff0c;沪指重返3200点上方&#xff0c;创业板指午后一度涨近3%&#xff0c;随后涨幅有所…

2023.1. Stimulsoft 报告和仪表板的新版本:Crack

2023.1. Stimulsoft 报告和仪表板的新版本。 发布时间&#xff1a;2022 年 12 月 9 日 我们很高兴地宣布发布 Stimulsoft Reports and Dashboards 2023.1 版&#xff01;我们为 .NET Core 组件添加了对Razor Pages的支持&#xff0c;为PHP和Blazor平台更新了组件。此外&#x…

【Linux】基础:进程间通信

【Linux】基础&#xff1a;进程间通信 摘要&#xff1a;本文主要介绍进程间通信的基础知识&#xff0c;首先将会对进程间通信进行简单概述&#xff0c;其中包括本质目的和方法分类。再介绍对于方法的实现过程&#xff0c;其中有三大类方法&#xff08;管道、System V、POSIX&am…

Kotlin 中变量,类型,表达式,函数详解

博主前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住也分享一下给大家 &#x1f449;点击跳转到教程 一、变量&#xff0c;编译时变量 1、要声明可修改变量&#xff0c;使用var关键字。 2、要声明只读变量&#xff0c;使用…

35岁高龄程序员的 4 条出路,提早布局,避免出局!

目录 一、40岁回首往事&#xff1a;自己竟没有任何核心优势二、公司遇到危机时40岁大龄程序员会怎么样三、适合大龄程序员的几条职业发展路线四、最后的寄语 这篇文章&#xff0c;给大家聊聊Java工程师的职业发展规划的一些思考&#xff0c;同时也给不少20多岁、30多岁&#…