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

python-opencv 培训课程笔记(1)

python-opencv 培训课程笔记(1)

博主参加了一次opencv库的培训课程,把课程所学整理成笔记,供大家学习,第一次课程包括如下内容:

1.读取图像

2.保存图像

3.使用opencv库显示图像

4.读取图像为灰度图像

5.读取视频或者摄像头

6.颜色通道的拆分和合并

7.边界填充

8.图像大小修改操作(resize)

9.数值计算

下面我们就开始内容介绍:
首先需要先导入相关库:

import os
import cv2
import  matplotlib.pyplot as plt
import numpy as np

第二步设置我们的文件读取路径,和文件保存路径:

path=r'D:\learn\photo\cv\cat.jpg'
path_dog=r'D:\learn\photo\cv\dog.jpg'
path2=r'D:\learn\photo\cv\cat_save.jpg'

1.读取图像


# imread(path,way)
#way=0 灰度图。way=1 彩图
img=cv2.imread(path)
img_dog=cv2.imread(path_dog)

imread默认读取彩图,如果后面加一个参数0,那么读取的就是灰度图。

2.保存图像

cv2.imwrite(path2,img_gray)

3.使用opencv库显示图像

def cv_show(name,img):cv2.imshow(name,img)#cv2.waitKey(0),接收0,表示窗口暂停cv2.waitKey(0)#销毁所有窗口cv2.destroyAllWindows()
cv_show('cat',img)

显示如下:
在这里插入图片描述

4.读取图像为灰度图像


img_gray=cv2.imread(path,0)cv_show('gray_cat',img_gray)

在这里插入图片描述

5.读取视频或者摄像头

path_video=r'D:\learn\photo\cv\test.mp4'
vc=cv2.VideoCapture(0)#启用摄像头
vc=cv2.VideoCapture(path_video)#读取视频if vc.isOpened():ret,frame=vc.read()else :ret=Falsewhile ret:if ret :img_c=cv2.cvtColor(frame,1)#进行通道转换cv2.imshow('video',img_c)# cv_show('video',frame)if cv2.waitKey(100) & 0xFF==27:breakret,frame=vc.read()

在这里插入图片描述

6.颜色通道的拆分和合并

def img_rgb_split(img):r,g,b=cv2.split(img)print(r.shape)return r,g,b#颜色通道的合并def img_rgb_merge(r,g,b):img=cv2.merge(r,g,b)return imgr,g,b=img_rgb_split(img)cv_show('r_cat',r)
cv_show('g_cat',g)
cv_show('b_cat',b)

在这里插入图片描述

在这里插入图片描述

7.边界填充


top_size,bottom_size,left_size,right_size=(50,50,50,50)
#复制法,复制最边缘像素 
replicate=cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv2.BORDER_REFLECT)
#反射法,在图像中指定像素的两边进行反射复制,
replicate101=cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv2.BORDER_REFLECT101)
#反射法,#以最边缘像素为轴
replicate_101=cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv2.BORDER_REFLECT_101)
#包装法
wrap=cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv2.BORDER_WRAP)#常量法
constrant=cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv2.BORDER_CONSTANT,value=0)plt.subplot(231)
plt.imshow(img)
plt.title('img')plt.subplot(232)
plt.imshow(replicate)
plt.title('REFLECT')
plt.subplot(233)
plt.imshow(replicate101)
plt.title('REFLECT101')
plt.subplot(234)
plt.imshow(replicate_101)
plt.title('REFLECT_101')
plt.subplot(235)
plt.imshow(wrap)
plt.title('wrap')
plt.subplot(236)
plt.imshow(constrant)
plt.title('constrant')
plt.show()

在这里插入图片描述

8.图像大小修改操作(resize)

img_dog=cv2.resize(img_dog,(500, 414))

9.数值计算


img_cat=img+10
plt.subplot(231)
plt.imshow(img)
plt.title('cat')plt.subplot(232)
plt.imshow(img_cat)
plt.title('cat+10')img_cat_dog=img+img_dogplt.subplot(233)
plt.imshow(img_cat_dog)
plt.title('cat+dog')
plt.subplot(234)
plt.imshow(img_dog)
plt.title('dog')img_weight=cv2.addWeighted(img,0.4,img_dog,0.6,0)
plt.subplot(235)
plt.imshow(img_weight)
plt.title('cat+dog_wight')plt.show()

结果如下:
在这里插入图片描述

相关文章:

python-opencv 培训课程笔记(1)

python-opencv 培训课程笔记(1) 博主参加了一次opencv库的培训课程,把课程所学整理成笔记,供大家学习,第一次课程包括如下内容: 1.读取图像 2.保存图像 3.使用opencv库显示图像 4.读取图像为灰度图像 …...

【C++初阶】STL详解(七)Stack与Queue的模拟实现

本专栏内容为:C学习专栏,分为初阶和进阶两部分。 通过本专栏的深入学习,你可以了解并掌握C。 💓博主csdn个人主页:小小unicorn ⏩专栏分类:C 🚚代码仓库:小小unicorn的代码仓库&…...

校园报修抢修小程序系统开发 物业小区报修预约上门维修工单系统

开发的功能模块有: 1.报修工单提交:学生、教职员工等可以使用小程序提交报修请求。这通常包括选择报修的问题类型(如水漏、电器故障、照明问题等),地点,报修联系人,联系电话等,并提供…...

【Android】Hilt比Android好在哪里

Hilt框架的功能和设计理念,和Dagger基本是完全一致的,Hilt也是完全在Dagger基础上进行开发的 但是Dagger的用法比较繁琐,Hilt主要是做了便用性上的改进,主要有以下点 提供常用Component,不用再为每个InjectTarget都创…...

计算方法 期末总结

思维导图 绪论 算法的性质: 有穷性、确切性、有输入输出、可行性 算法的描述方法: 自然语言、伪代码、流程图、N-S流程图 算法设计思想: 化大为小的缩减技术:二分法化难为易的校正技术:开方法化粗为精的松弛技术&a…...

【面试】jvm中堆是分配对象存储的唯一选择吗

目录 一、说明二、逃逸分析2.1 说明2.2 参数设置 一、说明 1.在《深入理解Java虚拟机》中关于Java堆内存有这样一段描述:随着JIT编译期的发展与逃逸分析技术逐渐成熟,栈上分配、标量替换优化技术将会导致一些微妙的变化,所有的对象都分配到堆上也渐渐变得…...

音视频同步笔记 - 以音频时间为基

音视频同步 - 以音频时间为基 上图介绍: 该图是以音频的时间为基,对视频播放时间的延迟控制方案,只调整视频的播放延时。delayTime是视频播放的延迟时间,初始值是1 / FPS * 1000 (ms),如果FPS为25帧率,初始…...

JavaScript 原始数据类型和对应的对象类型(内置对象)之间的关系

JavaScript 原始数据类型和对应的对象类型(内置对象)之间的关系 JavaScript 的原始(primitive)数据类型包括包括数字(Number)、字符串(String)、布尔值(Boolean&#xf…...

报错For debugging consider passing CUDA_LAUNCH_BLOCKING=1.

.报错For debugging consider passing CUDA_LAUNCH_BLOCKING1. /aten/src/ATen/native/cuda/NLLLoss2d.cu:103: nll_loss2d_forward_kernel: block: [29,0,0], thread: [707,0,0] Assertion t > 0 && t < n_classes failed. 报错信息如下&#xff1a; ./aten/…...

whisper使用方法

看这个 github https://github.com/Purfview/whisper-standalone-win/tags下载 视频提取音频 ffmpeg -i 222.mp4 -vn -b:a 128k -c:a mp3 output.mp3截取4秒后的音频 ffmpeg -i output.mp3 -ss 4 -c copy output2.mp3使用 whisper-faster.exe 生成字幕 whisper-faster.exe …...

通过easyexcel实现数据导入功能

上一篇文章通过easyexcel导出数据到excel表格已经实现了简单的数据导出功能&#xff0c;这篇文章也介绍一下怎么通过easyexcel从excel表格中导入数据。 目录 一、前端代码 index.html index.js 二、后端代码 controller service SongServiceImpl 三、功能预览 四、后端…...

Springboot_文件下载功能(前端后端)

遇到的问题&#xff1a; 文件下载后文件一直被破坏&#xff0c;无法正常打开文件名乱码&#xff0c;如图 刚开始一直在纠结&#xff0c;是不是后端没有写对&#xff0c;然后导致下载不能使用 后来搜索了一些资料&#xff0c;发现后端没什么问题 然后就开始找到其他项目对比…...

Vue框架学习笔记——v-bind数据单向绑定和v-model数据双向绑定

文章目录 v-bind&#xff0c;数据单向绑定简写形态&#xff08;省略v-bind&#xff0c;只留冒号&#xff09;示例一&#xff08;将输入框数据改为&#xff1a;哈哈哈哈哈&#xff09;&#xff1a;实例二&#xff08;将Vue实例中的name改为字符串&#xff1a;"单向绑定&quo…...

将对象转成URL参数

背景 有的时候前端跳转到其他平台的页面需要携带额外的参数&#xff0c;需要将对象转成用 & 连接的字符串拼接在路径后面。 实现方法...

【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中&#xff0c;传感器和控制器产生大量周…...

超级武器!深入LoadRunner性能测试流程及极速分析结果!

性能测试目的 1 什么是性能测试? 性能测试是通过性能的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。 负载测试和压力测试都属于性能测试&#xff0c;两者可以结合进行。通过负载测试&#xff0c;确定在各种工作负载下系统的性能&#xff0…...

解决requests库进行爬虫ip请求时遇到的错误的方法

目录 一、超时错误 二、连接错误 三、拒绝服务错误 四、内容编码错误 五、HTTP错误 在利用requests库进行网络爬虫的IP请求时&#xff0c;我们可能会遇到各种错误&#xff0c;如超时、连接错误、拒绝服务等等。这些错误通常是由目标网站的限制、网络问题或我们的爬虫代码中…...

大语言模型领域的重要术语解释

前言 本人对人工智能非常感兴趣&#xff0c;目前是一名初学者&#xff0c;在研究大语言模型的一些内容。很多模型都是用英文提出的&#xff0c;其中也包括很多概念&#xff0c;有些概念的中文翻译和其想表达的意思不完全一样&#xff0c;所以在这里&#xff0c;想更加精准地帮…...

无需公网IP,使用内网穿透实现公网访问本地OpenWRT管理界面

文章目录 1.openWRT安装cpolar2.配置远程访问地址3.固定公网地址 简单几步实现在公网环境下远程访问openWRT web 管理界面&#xff0c;使用cpolar内网穿透创建安全隧道映射openWRT web 界面面板443端口&#xff0c;无需公网IP&#xff0c;无需设置路由器。 1.openWRT安装cpola…...

利用 docker 实现JMeter分布式压测

为什么需要分布式&#xff1f; 在工作中经常需要对一些关键接口做高QPS的压测&#xff0c;JMeter是由Java 语言开发&#xff0c;没创建一个线程&#xff08;虚拟用户&#xff09;&#xff0c;JVM默认会为每个线程分配1M的堆栈内存空间。受限于单台试压机的配置很难实现太高的并…...

ARM开发板硬件接口与寄存器配置实战指南

1. ARM开发板硬件接口详解Integrator/IM-PD1开发板作为经典的ARM评估平台&#xff0c;其接口布局体现了嵌入式系统的典型设计思路。板载的PrimeCell系列外设控制器采用AMBA总线架构&#xff0c;通过标准化的寄存器接口与ARM内核交互。我们先从物理连接层开始剖析&#xff1a;1.…...

别再为CAD数据交换头疼了!用Open CASCADE的STEPControl_Reader轻松读取STEP模型(附完整C++代码)

工业级CAD数据交换实战&#xff1a;基于Open CASCADE的STEP文件解析全攻略 在机械设计、汽车制造和航空航天等领域&#xff0c;工程师们经常面临一个令人头疼的问题&#xff1a;如何在不同的CAD软件之间高效、准确地交换三维模型数据&#xff1f;想象一下&#xff0c;当你从供应…...

CSS怎样调整弹性项目排列顺序_使用order属性轻松控制DOM显示顺序

order属性未生效最常见的原因是父容器未设置display: flex或inline-flex&#xff1b;它仅作用于弹性项目&#xff0c;且按数值升序排列&#xff0c;不影响DOM顺序及可访问性。order属性为什么没生效最常见的原因是父容器没设 display: flex 或 display: inline-flex。Flex布局里…...

如何卸载并重装Oracle Grid_Deinstall脚本与ASM磁盘清理

...

Font Awesome 加载中图标的使用与优化

Font Awesome 加载中图标的使用与优化 随着互联网技术的不断发展,前端设计逐渐成为了用户体验的重要组成部分。而在前端设计中,图标的使用尤为关键。Font Awesome 是目前最受欢迎的前端图标库之一,其提供的加载中图标为网页或应用程序的交互性提供了极大的便利。本文将详细…...

从USB声卡到ADAU1701:一套完整的IIS数字音频输入搭建与调试实战(附资源链接)

从USB声卡到ADAU1701&#xff1a;一套完整的IIS数字音频输入搭建与调试实战 在数字音频处理领域&#xff0c;IIS&#xff08;Inter-IC Sound&#xff09;接口作为设备间传输高质量音频数据的标准协议&#xff0c;被广泛应用于各类专业音频设备中。ADAU1701作为一款功能强大的音…...

像素语言·跨维传送门应用场景:全球开发者社区多语技术问答机器人

像素语言跨维传送门应用场景&#xff1a;全球开发者社区多语技术问答机器人 1. 产品核心价值 像素语言跨维传送门(Pixel Language Portal)是一款专为开发者社区设计的智能翻译工具&#xff0c;它通过独特的16-bit像素冒险界面和强大的腾讯混元MT-7B翻译引擎&#xff0c;为技术…...

抖音视频批量下载终极指南:4步打造你的专属内容库

抖音视频批量下载终极指南&#xff1a;4步打造你的专属内容库 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. …...

Docker AI Toolkit 2026新特性全解密(Agent沙箱+模型热插拔+联邦学习容器化),90%工程师尚未启用的3个关键开关

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Docker AI Toolkit 2026 新特性全景概览 Docker AI Toolkit 2026 是面向生成式AI与边缘智能工作流深度优化的容器化开发套件&#xff0c;原生集成模型编译、量化推理、分布式训练协调与合规性审计能力。…...

告别英文界面!保姆级教程:为你的Postman(9.12.2版本)安装中文语言包

Postman 9.12.2 中文界面全平台配置指南 作为一名长期与API打交道的开发者&#xff0c;我深刻理解在非母语环境下工作的不便。Postman作为API开发领域的标杆工具&#xff0c;其英文界面确实让不少中文用户望而却步。本文将手把手教你如何为Postman 9.12.2版本安装中文语言包&am…...