1.3.OpenCV技能树--第一单元--图像的基础操作(基础篇)

news2024/12/28 20:57:48

文章目录

  • 1.文章内容来源
  • 2.图像的基本操作
    • 2.1.图像加载
    • 2.2.图像显示
    • 2.3.数据读取
    • 2.4.截取图像
    • 2.5.颜色通道提取
      • 2.5.1.保留红色处理
      • 2.5.2.保留绿色处理
      • 2.5.3.保留蓝色处理
  • 3.易错点总结与反思

1.文章内容来源

1.题目来源:
2.资料来源:https://edu.csdn.net/skill/opencv/opencv-819f137c35c64f76945bcd7e60d37807?category=657&typeId=20810#___44

2.图像的基本操作

2.1.图像加载

#%%
#图像显示
import cv2 
img = cv2.imread(r"cv.jpg")
print(type(img))#打印图像类型
print(img)#打印图像灰度值

在这里插入图片描述

2.2.图像显示

#%%
#图像显示
import cv2
img = cv2.imread(r"cv.jpg")# 加载图像
#如果图像过大的话可以进行设置
cv2.namedWindow('Test_Figure', 0)#设定图像    
cv2.resizeWindow('Test_Figure', 900, 600)   # 自己设定窗口图片的大小
cv2.imshow("Test_Figure",img)# 图像的显示,也可以创建多个窗口
cv2.waitKey(0)#等待时间,按任意键终止
cv2.destroyAllWindows()#销毁窗口

在这里插入图片描述

2.3.数据读取

imread功能是加载图像文件成为一个Mat对象,其中第一个参数表示图像文件名称,第二个参数表示加载的图像是什么类型,支持常见的三个参数值
IMREAD_UNCHANDED(<0) 表示加载原图,不做任何改变
IMREAD_GRAYSCALE(0) 表示把原图作为灰度图像加载进来
IMREAD_COLOR(>0) 表示把原图作为 RGB 图像加载进来
#%%
#数据读取
import cv2
img = cv2.imread(r"cv.jpg",cv2.IMREAD_GRAYSCALE)#设置为灰色显示
print(img)#打印灰度矩阵

在这里插入图片描述
还可以对图片进行输出

#%%
#数据读取
import cv2
img = cv2.imread(r"cv.jpg",cv2.IMREAD_GRAYSCALE)#设置为灰色显示
cv2.namedWindow('Test_Figure', 0)#设定图像    
cv2.resizeWindow('Test_Figure', 900, 600)   # 自己设定窗口图片的大小
cv2.imshow("Test_Figure",img)# 图像的显示,也可以创建多个窗口
cv2.waitKey(0)#等待时间,按任意键终止
cv2.destroyAllWindows()#销毁窗口
print(img)#打印灰度矩阵

在这里插入图片描述

2.4.截取图像

#%%
#截取部分图像
import cv2
img = cv2.imread(r"cv.jpg")#加载图像
cat = img[0:200, 0:200]#截取部分图像
cv2.imshow("cat_Figure",cat)# 图像的显示,也可以创建多个窗口
cv2.waitKey(0)#等待时间,按任意键终止
cv2.destroyAllWindows()#销毁窗口

在这里插入图片描述

2.5.颜色通道提取

#%%
#颜色通道提取split()函数
import cv2
img = cv2.imread(r"cv.jpg")
b,g,r = cv2.split(img)
print(r,g,b)

在这里插入图片描述

2.5.1.保留红色处理

#%%
#保留红色处理
import cv2
img = cv2.imread(r"cv.jpg")
imgR = img.copy()
# 注意参数的变化
imgR[:,:,0] = 0
imgR[:,:,1] = 0
cv2.namedWindow('Red Color', 0)#设定图像    
cv2.resizeWindow('Red Color', 900, 600)   # 自己设定窗口图片的大小
cv2.imshow('Red Color',imgR)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

2.5.2.保留绿色处理

#%%
#保留绿色处理
import cv2
img = cv2.imread(r"cv.jpg")
imgG = img.copy()
# 注意参数的变化
imgG[:,:,0] = 0
imgG[:,:,2] = 0
cv2.namedWindow('Green Color', 0)#设定图像    
cv2.resizeWindow('Green Color', 900, 600)   # 自己设定窗口图片的大小
cv2.imshow('Green Color',imgG)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

2.5.3.保留蓝色处理

#%%
#保留蓝色处理
import cv2
img = cv2.imread(r"cv.jpg")
imgB= img.copy()
# 注意参数的变化
imgB[:,:,1] = 0
imgB[:,:,2] = 0
cv2.namedWindow('Blue Color', 0)#设定图像    
cv2.resizeWindow('Blue Color', 900, 600)   # 自己设定窗口图片的大小
cv2.imshow('Blue Color',imgB)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

3.易错点总结与反思

总结与反思:
1.首先需要牢记数据读取的几个参数值,IMREAD_UNCHANDED/IMREAD_GRAYSCALE/IMREAD_COLOR各是什么意思
2.图像是由高维的连续的灰度值建立而成的。
3.通过split()函数可以对图像的颜色通过进行一个截取。
4.图像由RGB三种颜色组成,我们可以只显示一种颜色/两种颜色/三种颜色等等
5.如何显示/不显示某种颜色呢,就是将色度矩阵的最后一列进行操作,对应的数如下Blue(0),Green(1),Red(2)

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

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

相关文章

ALSA pcm接口的概念解释

PCM(数字音频)接口 PCM缩写: Pulse Code Modulation脉冲调制编码,我们理解为通过一定连续时间周期产生数字音频并带有音量样本的处理过程. 模拟信号被记录通过模拟到数字转换器,数字值(也就是某个特定时刻的音量值)获得来自ADC可以进一步处理,接下的图片展示的是个sine wavefor…

【BBC新闻文章分类】使用 TF 2.0和 LSTM 的文本分类

一、说明 NLP上的许多创新是如何将上下文添加到词向量中。常见的方法之一是使用递归神经网络

【user_key_payload、msg_msg、pipe_buffer】再探RWCTF2023-Digging-into-kernel-3

前言 在之前的文章中&#xff0c;我利用 ldt_struct 去泄漏的内核基地址&#xff0c;但是在内核中还存在着一些结构体可以去泄漏内核基地址。 user_key_payload 越界读泄漏内核基地址 本题并没有开启 slab_freelist_random 保护&#xff0c;并且可以可以同时控制两个堆块&am…

[图论]哈尔滨工业大学(哈工大 HIT)学习笔记16-22

视频来源&#xff1a;2.7.1 补图_哔哩哔哩_bilibili 目录 1. 补图 1.1. 补图 2. 双图 2.1. 双图定理 3. 图兰定理/托兰定理 4. 极图理论 5. 欧拉图 5.1. 欧拉迹 5.2. 欧拉闭迹 5.3. 欧拉图 5.4. 欧拉定理 5.5. 伪图 1. 补图 1.1. 补图 &#xff08;1&#xff09;…

使用图形视图框架(Graphics View Framework)在QML中创建交互式图形界面

使用图形视图框架(Graphics View Framework)在QML中创建交互式图形界面 使用图形视图框架(Graphics View Framework)在QML中创建交互式图形界面 使用图形视图框架(Graphics View Framework)在QML中创建交互式图形界面什么是图形视图框架(Graphics View Framework)&#xff1f;…

MATLAB算法实战应用案例精讲-【优化算法】沙丁鱼优化算法(SOA)(附MATLAB代码实现)

前言 沙丁鱼优化算法(Sardine optimization algorithm,SOA)由Zhang HongGuang等人于2023年提出,该算法模拟沙丁鱼的生存策略,具有搜索能力强,求解精度高等特点。 沙丁鱼主要以浮游生物为食,这些生物包括细菌、腔肠动物、软体动物、原生动物、十足目、幼小藤壶、鱼卵、甲藻…

cartographer-(0)-ubuntu(20.04)-环境安装

1.安装 ROS wiki.ros.org 1.1修改镜像源&#xff1a; 到网站上找与操作系统相匹配的镜像源 ubuntu | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror # 默认注释了源码镜像以提高 apt update 速度&#xff0c;如有需要可自行取消注释 deb htt…

MySQL基础-事务

目录 1.事务简介 2.事务的操作 2.1 实验需要用到的数据 2.2 完成转账操作 修改事务执行方式 手动开启事务的方式 3.事务的四大特性 4.并发事务问题 1.事务简介 事务是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;事务会把所有的操作作为一个整体一…

【开发篇】十五、Spring Task实现定时任务

文章目录 1、使用示例2、相关配置3、Scheduled注解4、Spring Task单线程下的阻塞坑5、Spring Task阻塞问题的处理思路6、Spring Task在分布式环境中 上一篇用Quartz来实现了定时任务&#xff0c;但相对来说&#xff0c;这个框架还是比较繁琐。Spring Boot默认在无任何第三方依赖…

一天销量200万,国产5G手机20天才200万,挑战iPhone也就想想罢了

国产5G手机频频放话要挑战iPhone&#xff0c;不过现实却相当打脸&#xff0c;果粉对苹果的忠诚丝毫没有受到影响&#xff0c;销量是最直接的表现&#xff0c;那就是国产5G手机20天才卖出200万部&#xff0c;而这仅仅是iPhone15一天的销量。 iPhone15在发布前曾拉高了消费者的期…

【应用层协议】初始Http,fiddler的使用

文章目录 1. HTTP概念2. 下载fiddler及使用获得HTTP协议格式2.1 fiddler的下载2.2 fiddler使用 3. HTTP请求&#xff08;Request&#xff09;3.1 请求行3.1.1 URL3.1.2 方法3.1.2.1 GET3.1.2.2 POST3.1.2.3 其他方法 3.2 报头&#xff08;header&#xff09;3.3 空白行3.4 正文…

Django 模型层的操作(Django-05 )

一 模型层的解读 Django中内嵌了ORM框架&#xff0c;不需要直接编写SQL语句进行数据库操作&#xff0c;而是通过定义模型类&#xff0c;操作模型类来完成对数据库中表的增删改查和创建等操作。 O 是object&#xff0c;也就类对象的意思。R 是relation&#xff0c;翻译成中文是…

Python综合案例:学生管理系统

目录 需求说明&#xff1a; 功能&#xff1a; 创建入口函数&#xff1a; 实现菜单函数&#xff1a; 实现增删查操作&#xff1a; 1. 新增学生 2. 展示学生 3. 查找学生 4. 删除学生 加入存档读档&#xff1a; 1. 约定存档格式 2. 实现存档函数 3. 实现读档函数 打…

C#中的数组探究与学习

目录 C#中的数组一般分为:一.数组定义:为什么要使用数组?什么是数组?C#一维数组for和foreach的区别C#多维数组C#锯齿数组初始化的意义:适用场景:C#中的数组一般分为: ​①.一维数组。 ②.多维数组,也叫矩形数组。 ③.锯齿数组,也叫交错数组。 一.数组定义: 数组…

013-第二代上位机开发环境搭建

第二代上位机开发环境搭建 文章目录 第二代上位机开发环境搭建项目介绍虚拟机安装Debian 10文件传输远程调试VNCrsync下载安装验证 配置远程调试环境配置远程设备配置 kitsCompilers配置Qtversions配置kits 测试 总结一下 关键字&#xff1a; Qt、 Qml、 关键字3、 关键字4…

GitHub爬虫项目详解

前言 闲来无事浏览GitHub的时候&#xff0c;看到一个仓库&#xff0c;里边列举了Java的优秀开源项目列表&#xff0c;包括说明、仓库地址等&#xff0c;还是很具有学习意义的。但是大家也知道&#xff0c;国内访问GitHub的时候&#xff0c;经常存在访问超时的问题&#xff0c;…

云安全之等级保护解决方案及应用场景

等保2.0解决方案背景 适应云计算、移动互联网、大数据、物联网和工业控制等新技术发展&#xff0c;在新的技术场景能够顺利开展等级保护工作;《网络安全法》2016年已正式发布&#xff0c;等级保护2.0为了更好配合《网络安全法》的实施&#xff1b;等级保护1.0&#xff0c;在适…

U盘支持启动区+文件存储区的分区方法

准备新U盘 启动diskgenius &#xff0c;先建立一个主分区&#xff08;7G&#xff09;&#xff0c;剩余空间建立为第二分区&#xff0c;然后设定第二分区激活。 diskgenius格式化 用diskgenius格式化&#xff0c;在格式化的过程中有一个 写入dos系统的选项&#xff0c;在格式…

企业微信机器人对接GPT

现在网上大部分微信机器人项目都是基于个人微信实现的&#xff0c;常见的类库都是模拟网页版微信接口。 个人微信作为我们自己日常使用的工具&#xff0c;也用于支付场景&#xff0c;很怕因为违规而被封。这时&#xff0c;可以使用我们的企业微信机器人&#xff0c;利用企业微信…

抄写Linux源码(Day14:从 MBR 到 C main 函数 (3:研究 head.s) )

回忆我们需要做的事情&#xff1a; 为了支持 shell 程序的执行&#xff0c;我们需要提供&#xff1a; 1.缺页中断(不理解为什么要这个东西&#xff0c;只是闪客说需要&#xff0c;后边再说) 2.硬盘驱动、文件系统 (shell程序一开始是存放在磁盘里的&#xff0c;所以需要这两个东…