当前位置: 首页 > 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 测试固定公网地址远程 前言 远程…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...

GitHub 趋势日报 (2025年06月08日)

📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...

【C++】纯虚函数类外可以写实现吗?

1. 答案 先说答案&#xff0c;可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...

QT开发技术【ffmpeg + QAudioOutput】音乐播放器

一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下&#xff0c;音视频内容犹如璀璨繁星&#xff0c;点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频&#xff0c;到在线课堂中知识渊博的专家授课&#xff0c;再到影视平台上扣人心弦的高清大片&#xff0c;音…...

倒装芯片凸点成型工艺

UBM&#xff08;Under Bump Metallization&#xff09;与Bump&#xff08;焊球&#xff09;形成工艺流程。我们可以将整张流程图分为三大阶段来理解&#xff1a; &#x1f527; 一、UBM&#xff08;Under Bump Metallization&#xff09;工艺流程&#xff08;黄色区域&#xff…...

【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅!

【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅! 🌱 前言:一棵树的浪漫,从数组开始说起 程序员的世界里,数组是最常见的基本结构之一,几乎每种语言、每种算法都少不了它。可你有没有想过,一组看似“线性排列”的有序数组,竟然可以**“长”成一棵平衡的二…...