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

news2025/2/24 3:00:45

文章目录

  • 相关链接
  • 运行环境
  • 前言
  • 计算机图形
  • 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 np

img = 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 np

img = 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 np

img_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零基础入门教程

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

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

相关文章

Jackson通过自定义序列化器给URL拼接访问域名

1、需求 在存储文件访问路径时,一般不会存储域名地址,若文件服务域名和当前应用域名不一致时,就需要在返回数据库的图片路径给前端时,拼接文件服务的域名。 2、处理方式 因为Spring Boot默认使用的是Jackson作为序列化工具&…

redis的搭建及应用(二)-redis的持久化策略

Redis的持久化策略 RDB RDB持久化是指在指定的时间间隔内将redis内存中的数据集快照写入磁盘,实现原理是redis服务在指定的时间间隔内先fork一个子进程,由子进程将数据集写入临时文件,写入成功后,再替换之前的文件,用二…

【力扣】20.有效的括号

家人们,看这排序,一看就很简单,对吧?不对,我觉得还挺不是很容易的,哈哈哈。 题解: 在看题目的时候,我一开始的解题思路就挺复杂的。题目说了”左括号必须以正确的顺序闭合“&#x…

76 Python开发-内外网收集Socket子域名DNS

目录 Python开发相关知识点本篇文章涉及知识点演示案例:IP&Whois&系统指纹获取代码段-外网CDN&子域名&端口扫描&交互代码段-外网IP&计算机名&存活主机&端口扫描代码段-内网Py格式解析环境与可执行程序格式转换-Pyinstaller 涉及资源&#xff1…

我的NPI项目之行业黑话 -- 电子/机构/软件/认证

因为最近的NPI项目,参加了很多项目的会议,有电子/机构/软件/认证相关的各方面的专业词汇就出现了。这里我将之称为黑话,就是对我(纯软件) 来说是黑盒的话。这里简单记录并用于理解。 EE有关: Layout,一直…

详解全志R128 RTOS安全方案功能

介绍 R128 下安全方案的功能。安全完整的方案基于标准方案扩展&#xff0c;覆盖硬件安全、硬件加解密引擎、安全启动、安全系统、安全存储等方面。 配置文件相关 本文涉及到一些配置文件&#xff0c;在此进行说明。 env*.cfg配置文件路径&#xff1a; board/<chip>/&…

树莓派界面改成中文

安装完树莓派系统(Raspberry Pi OS with Desktop)&#xff0c;第一次启动时&#xff0c;时会有如下面二个图所示&#xff0c;让你选择区域时区和语言。 树莓派默认的语言为英文&#xff0c;如果你在安装时没有选择的话&#xff0c;默认的区域为英国&#xff0c;语言为英国英文&…

Translation翻译插件

Translation插件是为IntelliJ IDEA开发的&#xff0c;因此只能在IntelliJ IDEA中使用。但是&#xff0c;如果你需要在其他软件中进行翻译&#xff0c;可以考虑使用其他的翻译工具或服务。例如&#xff0c;一些在线翻译网站&#xff08;如Google翻译、百度翻译等&#xff09;提供…

hosts文件、DNS、删除浏览器域名安全策略、浏览器代理

文章目录 1. hosts文件2. DNS3. 删除浏览器域名安全策略4. 浏览器代理服务器 1. hosts文件 位置 C:\Windows\System32\drivers\etc\hosts 没有后缀名 内容 ip 一个空格 域名 定义 hosts就是系统的一个配置文件&#xff0c;主要配置ip和域名的映射关系&#xff0c;相当于是本地…

低信噪比环境下的语音端点检测

端点检测技术 是 语音信号处理 的关键技术之一为提高低信噪比环境下端点检测的准确率和稳健性&#xff0c;提出了一种非平稳噪声抑制和调制域谱减结合功率 归一化 倒谱距离的端点检测算法 1 端点检测 1-1 定义 定义&#xff1a;在 存在背景噪声 的情况下检测出 语音的起始点和…

记录 Docker 中安装 ROS2

目录 1 安装 Docker 2 安装 ROS2 3 启动 Docker 4 测试 ROS2 环境 1 安装 Docker 1. 更新软件包sudo apt updatesudo apt upgrade2. 安装 docker 依赖sudo apt-get install ca-certificates curl gnupg lsb-release3. 添加 docker 官方 GPG 密钥curl -fsSL http://mirror…

小米路由器2(R2D) 安装 MIXBOX

1. 先刷开发版 ROM http://www1.miwifi.com/miwifi_download.html 进入上述网页&#xff0c;找到 R2D 点击下载 开发版 ROM 教程 看 下载按钮上边的 “刷机教程” 刷机教程 2. 开启SSH工具 登录自己的小米账号后&#xff0c;里面会显示出 自己的 root密码&#xff1b; 默认…

9_js_dom编程进阶3

Dom节点删除和复制操作事件加强讲解 1. 节点操作 1.1 删除节点 Node.removeChild() 方法从 DOM 中删除一个子节点。返回删除的节点。 child 是要移除的那个子节点。 node 是child的父节点。 PS&#xff1a;只能由父节点删除子节点 课堂案例&#xff1a;1.节点操作之删除节…

酷我音乐逆向 请求头 参数解密(js逆向)

免责声明&#xff1a;     本篇博文的初衷是分享自己学习逆向分析时的个人感悟&#xff0c;所涉及的内容仅供学习、交流&#xff0c;请勿将其用于非法用途&#xff01;&#xff01;&#xff01;任何由此引发的法律纠纷均与作者本人无关&#xff0c;请自行负责&#xff01;&…

使用Rust发送邮件

SMTP协议与MIME协议 SMTP&#xff08;简单邮件传输协议,Simple Mail Transfer Protocol&#xff09;是一种用于发送和接收电子邮件的互联网标准通信协议。它定义了电子邮件服务器如何相互发送、接收和中继邮件。SMTP 通常用于发送邮件&#xff0c;而邮件的接收通常由 POP&#…

通过C++程序实现光驱的自动化刻录和读取

文章目录 ISO文件格式光盘的基本概念光盘种类特点DVDR光盘使用windows调用Linux调用Linux平台下用到的C库:读取设备驱动列表向光驱中写文件 数字存储媒体快速发展的今天&#xff0c;光驱的使用已经不像以前那样普及了。但是在数据备份、安装软件和操作系统、旧设备兼容等领域还…

redis的搭建及应用(三)-Redis主从配置

Redis主从配置 为提升Redis的高可用性&#xff0c;需要搭建多个Redis集群以保证高可用性。常见搭建方式有&#xff1a;主从&#xff0c;哨兵集群等&#xff0c;本节我们搭建一主二从的多Redis架构。 redis主从安装1主2从的方式配置&#xff0c;以端口号为redis的主从文件夹。 主…

Elasticsearch8.x结合OpenAI CLIP模型实现图搜图及文搜图功能

前言 在当今大数据时代&#xff0c;搜索引擎已经是许多应用的核心组件之一&#xff0c;近年随着大模型以及AI技术&#xff08;如&#xff1a;自然语言处理NLP&#xff09;的流行&#xff0c;这些技术的结合将会创造出更多的应用场景&#xff0c;比如&#xff1a;电商商品搜索、…

实习知识整理12:点击购物车渲染出购物车中的商品并实现在购物车界面对商品价格和数量的相关操作

1. 点击购物车渲染出购物车商品界面 通过userId从购物车表中查找商品的相关信息 前端&#xff1a;需要向后端传递userId 后端&#xff1a; CartMapper.java CartMapper.xml CartService.java 接口 CartServiceImpl.java 实现类 CartController.java cartIndex.html页面 …

第二十一章Java网络通信

网络通信这一章 基本分为三个部分 网络基础概念和TCP,UDP这三个部分主要如下&#xff1a; 计算机网络实现了堕胎计算机间的互联&#xff0c;使得它们彼此之间能够进行数据交流。网络应用程序就是再已连接的不同计算机上运行的程序&#xff0c;这些程序借助于网络协议&#x…