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

Python+OpenCV 零基础学习笔记(4-5):计算机图形基础+Python相对文件路径+OpenCV图像+OpenCV视频

文章目录

  • 相关链接
  • 运行环境
  • 前言
  • 计算机图形
  • OpenCV简单使用
    • 图形读取
      • 文件读取可能会出现的问题:路径不对
      • 解决方案
      • 其它路径问题解决方案
    • 图像显示+保存
    • OpenCV视频
      • 视频素材如何获取?
      • 简单视频读取

相关链接

【2022B站最好的OpenCV课程推荐】OpenCV从入门到实战 全套课程

CSDN标题里个括号对应视频的分P
在这里插入图片描述

OpenCV+Python CSDN专栏

Gitee 项目地址

运行环境

  • Python:3.11.5
  • Anaconda:23.7.4
  • IDE:vscode
  • 运行环境:Windows
  • OpenCV:4.8.1

Python+OpenCV 零基础学习笔记(1-3):anaconda+vscode+jupyter环境配置

前言

本节课来了解以下OpenCV的简单使用和图像的简单信息

计算机图形

在这里插入图片描述

彩色图形
R/G/B三通道
灰度图形
0-255的灰度矩阵

OpenCV简单使用

我们使用之前要确保环境运行正确。

import cv2
import sys# 打印Python版本
print(sys.version)
# 打印OpenCV版本
print(cv2.__version__)

这个是我本地的运行结果,如果运行成功则说明环境配置正确
在这里插入图片描述

图形读取

cat.png
在这里插入图片描述
文件路径

在这里插入图片描述

文件读取

#%%
import cv2
import matplotlib.pyplot as plt
import numpy as npimg = cv2.imread(r'cat.png')
print(img)
# %%

文件读取可能会出现的问题:路径不对

在这里插入图片描述
目前的路径是

  • OpenCV_Python
    • Python
      • 4
        • test1.py
        • cat.png

Vscode认为我们读取文件的路径是从Python起步的,所以没找到Python/cat.png文件

python相对路径文件无法读取,更改工作路径

如果想正常读取,则需要将代码改为

#%%
import cv2
import matplotlib.pyplot as plt
import numpy as npimg = cv2.imread('Python\\4\\cat.png')
print(img)
# %%

但是这样就不能运行Jupyter了。因为Jupyter只执行当前代码。

解决方案

修改Vscode 工作区,改成运行文件夹的根目录即可
在这里插入图片描述

运行成功!
在这里插入图片描述
在这里插入图片描述

其它路径问题解决方案

如果实在不行,直接vscode复制相对文件位置即可
在这里插入图片描述

opencv读取图片(绝对路径和相对路径,新手常踩的坑)

python配置opencv环境后,读取图片,报错:can‘t open/read file: check file path/integrity

图像显示+保存


#%%
#%%
import cv2
import matplotlib.pyplot as plt
import numpy as npimg_rgb = cv2.imread('cat.png')
# 彩色图像转灰度图像
img_gray = cv2.imread('cat.png',cv2.IMREAD_GRAYSCALE)
# 打印图像的矩阵
print(img_rgb)
# 打印图像的长,宽,通道数(彩色3通道,黑白0通道)
print(img_rgb.shape)print(img_gray)
print(img_gray.shape)# 打印图像,因为OpenCV读取图像是BGR的顺序,还是要使用内置的读取方式
# image是我们取的窗口名,img是我们的图像输入
cv2.imshow('image',img_gray)
# 输入任意键关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()
# 保存图像
cv2.imwrite('save_cat.png',img_gray)# %%

在这里插入图片描述
在这里插入图片描述

OpenCV视频

视频素材如何获取?

这里推荐一个B站视频下载器

哔哩下载姬+BiliDuang可下4K画质无水印的B站视频下载工具

我们搜索视频素材使用关键词:视频素材+XX。
比如我们要下载一个汽车的视频,我们就在B站上面搜索:视频素材 汽车

在这里插入图片描述
或者找个视频素材的Up主。
我这里随便找了一个

卓特视觉视频素材

然后下载器里面下载

下载成功

在这里插入图片描述

简单视频读取

# %%
# 导入包
import cv2
import matplotlib.pyplot as plt
import numpy as np# 导入视频
input_video = {}
# 下载好的视频文件
input_video['vc'] = cv2.VideoCapture('video_30.mp4')
# 判断是否读取成功
if input_video['vc'].isOpened():# Python语法,元组读取input_video['open'] = input_video['vc'].read()
else:input_video['open'] = False# 循环帧读取,两个退出条件:视频播放完/输入'ESC'退出
while input_video['open']:open,frame = input_video['vc'].read()if frame is None:break;if open:# 我们先播放灰度图像gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)# 打开一个名为result的窗口,播放帧cv2.imshow('result',gray)# 这个是特殊组合,waiteKey指每帧的时间,输入'esc'退出视频播放if cv2.waitKey(10) & 0xff == 27:break;# 释放视频输入流
input_video['vc'].release();
# 关闭所有窗口
cv2.destroyAllWindows();

在这里插入图片描述

Opencv 中 waitkey()& 0xFF,“0xFF”的作用解释

如果想指定退出键,可以使用ord函数

Python ord 函数 - Python零基础入门教程

相关文章:

Python+OpenCV 零基础学习笔记(4-5):计算机图形基础+Python相对文件路径+OpenCV图像+OpenCV视频

文章目录 相关链接运行环境前言计算机图形OpenCV简单使用图形读取文件读取可能会出现的问题:路径不对解决方案其它路径问题解决方案 图像显示保存OpenCV视频视频素材如何获取?简单视频读取 相关链接 【2022B站最好的OpenCV课程推荐】OpenCV从入门到实战 …...

【C++篇】讲解Vector容器的操作方法

文章目录 🍔vector容器概念🌹操作方法⭐赋值操作⭐容量和大小⭐插入和删除⭐数据存取 🍔vector容器概念 vector 是 C 标准库中的一个容器,它提供了一种动态数组的实现。vector 容器可以存储任意类型的元素,并且可以根…...

桥接模式-举例

概叙:桥接模式用一种巧妙的方式处理多层继承存在的问题, 用抽象关联取代了传统的多层继承, 将类之间的静态继承关系转换为动态的对象组合关系, 使得系统更加灵活,并易于扩展, 同时有效控制了系统中类的个数…...

FreeBSD下安装Jenkins(软件测试集成工具)记录

简要介绍Jenkins 简而言之,Jenkins 是领先的开源自动化服务器。它使用 Java 构建,提供了 1,800 多个插件来支持几乎任何事情的自动化,因此人类可以将时间花在机器无法完成的事情上。 主要目的: 持续、自动地构建/测试软件项目。…...

数据结构学习 Leetcode474 一和零

关键词:动态规划 01背包 一个套路: 01背包:空间优化之后dp【target1】,遍历的时候要逆序遍历完全背包:空间优化之后dp【target1】,遍历的时候要正序遍历 目录 题目: 思路: 复杂…...

VS配置PCO相机SDK环境

VS配置PCO相机SDK环境 概述:最近要用到一款PCO相机,需要协调其他部件实现一些独特的功能。因此需要用到PCO相机的SDK,并正确配置环境。良好的环境是成功的一半。其SDK可以在官网下载,选择对应版本的安装即可。这里用的是pco.cpp.1.2.0 Windows,VS 2022 专业版。 链接: P…...

六、Redis 分布式系统

六、Redis 分布式系统 六、Redis 分布式系统6.1 数据分区算法6.1.1 顺序分区6.1.2 哈希分区 6.2 系统搭建与运行6.2.1 系统搭建6.2.2 系统启动与关闭 6.3 集群操作6.3.1 连接集群6.3.2 写入数据6.3.3 集群查询6.3.4 故障转移6.3.5 集群扩容6.3.6 集群收缩 6.4 分布式系统的限制…...

Unity相机跟随角色移动

相机跟随角色移动 使用LateUpdate();方法,根据角色移动而进行跟随,固定角度,类似2.5D视角。 需要将相机放到一个空对象,将角度调节好,挂载组件,将角色对象放入组件中,调整moveTime设…...

Lua的垃圾回收机制详解

Lua 是一种轻量级的编程语言,广泛用于嵌入到其他应用程序中,尤其是在游戏开发领域。Lua 的内存管理机制采用了自动垃圾收集(Garbage Collection)的方法。以下是Lua内存管理的一些关键方面: 垃圾收集原理概述 Lua 使用…...

java设计模式学习之【解释器模式】

文章目录 引言解释器模式简介定义与用途实现方式 使用场景优势与劣势在Spring框架中的应用表达式解析示例代码地址 引言 在我们的日常生活中,语言的翻译和理解是沟通的关键。每种语言都有自己的语法规则,而翻译人员和计算机程序需要理解并遵循这些规则来…...

Unity中Shader旋转矩阵(四维旋转矩阵)

文章目录 前言一、围绕X轴旋转1、可以使用上篇文章中,同样的方法推导得出围绕X轴旋转的点阵。2、求M~rotate~ 二、围绕Y轴旋转1、可以使用上篇文章中,同样的方法推导得出围绕Y轴旋转的点阵。2、求M~rotate~ 三、围绕Z轴旋转1、可以使用上篇文章中&#x…...

【大数据】Centos 7安装教程

一、下载VMware 大家可以通过浏览器进入官网下载VMware,下载后打开VMware进行安装。 二、下载镜像的方式 1、进入Centos官网下载 2、进入阿里云、华为云镜像站下载 以阿里云为例,这里有很多,比如ubuntu、centos,点进去就可以选…...

2024 年 11 款最佳 Android 数据恢复软件应用

Android 设备上的数据丢失可能是一种令人痛苦的经历,通常会导致不可替代的信息瞬间消失。 意外删除、系统崩溃或格式错误都可能发生,重要数据的丢失可能会扰乱日常工作并影响您的工作效率。 幸运的是,技术进步带来了多种恢复解决方案&…...

Redis 核心知识总结

Redis 核心知识总结 认识 Redis 什么是 Redis? Redis 是一个由 C 语言开发并且基于内存的键值型数据库,对数据的读写操作都是在内存中完成,因此读写速度非常快,常用于缓存,消息队列、分布式锁等场景。 有以下几个特…...

Android Jetpack之用Room+ViewModel+LiveData实现增删改查数据(createFromAsset())

文章目录 一、Room简介二、用RoomViewModelLiveData增删改查数据三、下载源码 一、Room简介 Room是Google推出的数据库框架,是一个 ORM (Object Relational Mapping)对象关系映射数据库、其底层还是对SQLite的封装。 Room包含三个主要组件: 数据库类&…...

MySQL ORDER BY(排序) 语句-读取的数据进行排序

MySQL ORDER BY(排序) 语句 我们知道从 MySQL 表中使用 SELECT 语句来读取数据。 如果我们需要对读取的数据进行排序,我们就可以使用 MySQL 的 ORDER BY 子句来设定你想按哪个字段哪种方式来进行排序,再返回搜索结果。 MySQL ORDER BY(排序) 语句可以…...

【ES】es介绍

倒排索引(Inverted Index)和正排索引(Forward Index) 正排索引是一种以文档为单位的索引结构,它将文档中的每个单词或词组与其所在的文档进行映射关系的建立。正排索引通常用于快速检索指定文档的内容,可以…...

07.kubernetes客户端部署

kubernetes 客户端部署 主要是配置 kubectl 完成以下两个操作: 首先是要实现通过命令行连接到Kubernetes的apiserver然后就是创建必要的 ClusterRoleBinding 实现 kubelet bootstrapping CSR 的自动验签kubelet bootstrapping主要涉及以下两个问题,官方文档已经给出详细的介…...

laravel5.8中实现验证码组件的安装和验证

本篇文章主要讲解使用laravel5.8自带的验证码库实现验证码验证的效果教程。通过本教程你可以快速接入到自己的项目中开发相应的验证功能。 作者:任聪聪 (rccblogs.com) 日期:2023年12月17日 实际效果 安装步骤 步骤一、输入命令 composer require mews…...

使用VScode通过内网穿透在公网环境下远程连接进行开发

文章目录 前言1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar内网穿透4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程 前言 远程…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...

什么是EULA和DPA

文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践

在 Kubernetes 集群中,如何在保障应用高可用的同时有效地管理资源,一直是运维人员和开发者关注的重点。随着微服务架构的普及,集群内各个服务的负载波动日趋明显,传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...

Matlab实现任意伪彩色图像可视化显示

Matlab实现任意伪彩色图像可视化显示 1、灰度原始图像2、RGB彩色原始图像 在科研研究中,如何展示好看的实验结果图像非常重要!!! 1、灰度原始图像 灰度图像每个像素点只有一个数值,代表该点的​​亮度(或…...

6.计算机网络核心知识点精要手册

计算机网络核心知识点精要手册 1.协议基础篇 网络协议三要素 语法:数据与控制信息的结构或格式,如同语言中的语法规则语义:控制信息的具体含义和响应方式,规定通信双方"说什么"同步:事件执行的顺序与时序…...

7种分类数据编码技术详解:从原理到实战

在数据分析和机器学习领域,分类数据(Categorical Data)的处理是一个基础但至关重要的环节。分类数据指的是由有限数量的离散值组成的数据类型,如性别(男/女)、颜色(红/绿/蓝)或产品类…...