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 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.mfbz.cn/a/276510.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JavaSE基础50题:27(数组练习)二分查找

概述 给定一个有序整数数组,实现二分查找。 二分查找的前提:必须是有序的数组!! 方法具体实现 如找数字5,定义L、R、M,其中M是L和R的中间位置,即(LR) / 2 的位置。 如下图所示: ①…

小米SU7汽车发布会; 齐碳科技C+轮融资;网易 1 月 3 日发布子曰教育大模型;百度文心一言用户数已突破 1 亿

投融资 • 3200 家 VC 投资的创业公司破产,那个投 PLG 的 VC 宣布暂停投资了• 云天励飞参与 AI 技术与解决方案提供商智慧互通 Pre-IPO 轮融资• 百度投资 AIGC 公司必优科技• MicroLED量测公司点莘技术获数千万级融资• 智慧互通获AI上市公司云天励飞Pre-IPO轮战…

Redis布隆过滤器BloomFilter

👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring源码、JUC源码、Kafka原理、分布式技术原理、数据库技术🔥如果感觉博主的文章还不错的…

【C语言】数据结构——排序(一)

💗个人主页💗 ⭐个人专栏——数据结构学习⭐ 💫点击关注🤩一起学习C语言💯💫 目录 导读:数组打印与交换1. 插入排序1.1 直接插入排序1.1.1 基本思想1.1.2 实现代码1.1.3 图解 1.2 希尔排序1.2.1…

Centos7:Jenkins+gitlab+node项目启动(3)

Centos7:Jenkinsgitlabnode项目启动(1) Centos7:Jenkinsgitlabnode项目启动(1)-CSDN博客 Centos7:Jenkinsgitlabnode项目启动(2) Centos7:Jenkinsgitlabnode项目启动(2)-CSDN博客 Centos7:Jenkinsgitlabnode项目启…

python如何读取被压缩的图像

读取压缩的图像数据: PackBits 压缩介绍: CCITT T.3 压缩介绍: 读取压缩的图像数据: 在做图像处理的时候,平时都是使用 函数io.imread() 或者是 函数cv2.imread( ) 函数来读取图像数据,很少用PIL.Image…

华为云CCE-集群内访问-根据ip访问同个pod

华为云CCE-集群内访问-根据ip访问同个pod 问题描述:架构如下:解决方法: 问题描述: 使用service集群内访问时,由于启用了两个pod,导致请求轮询在两个pod之间,无法返回正确的结果。 架构如下&am…

仪表盘、数据分析新增分享功能及应用服务下新增服务实例菜单

近期,博睿数据根据一体化智能可观测平台 Bonree ONE 产品本身,以及用户反馈进行持续的更新和优化。以下为 Bonree ONE 产品功能更新报告第03期内容,更多探索,未完待续。 本次迭代的更新集中在平台的仪表盘、数据分析新增分享功能&…

日志框架简介-Slf4j+Logback入门实践 | 京东云技术团队

前言 随着互联网和大数据的迅猛发展,分布式日志系统和日志分析系统已广泛应用,几乎所有应用程序都使用各种日志框架记录程序运行信息。因此,作为工程师,了解主流的日志记录框架非常重要。虽然应用程序的运行结果不受日志的有无影…

【ubuntu 22.04】安装中文版系统、中文语言包和中文输入法

在系统安装中的键盘布局选择时,选择Chinese - Chinese,此时会自动安装所有的中文语言包和ibus中文输入法系统安装成功重启后,点击设置 - 区域和语言 - 管理已安装的语言 * 根据提示安装更新后,将汉语(中国)…

springboot整合gateway网关

一、网关基本概念 1、API网关介绍 API 网关出现的原因是微服务架构的出现,不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接与各个微服务通信,会有以下的问题…

Python基础语法总结

1.每条语句结束不需要分号(也可以加上), 直接换行, 注意: 如果两行代码写一行, 则必须加分号. 2.定义变量不需要指定类型(如果需要写类型, 需要在变量名后面加": 类型, 这个写法只是方便读代码). 3.变量名大小写敏感. 4.查看变量类型: type(变量名). 5.Python中的int表…

AI-ChatGPTCopilot

ChatGPT chatGPT免费网站列表:GitHub - LiLittleCat/awesome-free-chatgpt: 🆓免费的 ChatGPT 镜像网站列表,持续更新。List of free ChatGPT mirror sites, continuously updated. Copilot 智能生成代码工具 安装步骤 - 登录 github&am…

硬件安全模块 (HSM)、硬件安全引擎 (HSE) 和安全硬件扩展 (SHE)的区别

术语 硬件安全模块 (HSM) :Hardware Security Modules硬件安全引擎 (HSE) :Hardware Security Engines安全硬件扩展 (SHE) : Secure Hardware Extensions 介绍 在汽车行业中,硬件安全模块 (HSM)、硬件安全引擎 (HSE) 和安全硬件…

MetalLB:本地Kubernetes集群的LoadBalancer负载均衡利器

背景 在本地集群进行测试时,我们常常面临一个棘手的问题:Service Type不支持LoadBalancer,而我们只能选择使用NodePort作为替代。这种情况下,我们通常会配置Service为NodePort,并使用externalIPs将流量导入Kubernetes…

论文阅读:Blind Super-Resolution Kernel Estimation using an Internal-GAN

这是发表在 2019 年 NIPS 上的一篇文章,那个时候还叫 NIPS,现在已经改名为 NeurIPS 了。文章中的其中一个作者 Michal Irani 是以色 Weizmann Institute of Science (魏茨曼科学研究学院) 的一名教授,对图像纹理的内在统计规律有着很深入的研…

【北亚服务器数据恢复】ZFS文件系统服务器ZPOOL下线的数据恢复案例

服务器数据恢复环境: 服务器中有32块硬盘,组建了3组RAIDZ,部分磁盘作为热备盘。zfs文件系统。 服务器故障: 服务器运行中突然崩溃,排除断电、进水、异常操作等外部因素。工作人员将服务器重启后发现无法进入操作系统。…

爬虫工作量由小到大的思维转变---<第三十三章 Scrapy Redis 23年8月5日后会遇到的bug)>

前言: 收到回复评论说,按照我之前文章写的: 爬虫工作量由小到大的思维转变---<第三十一章 Scrapy Redis 初启动/conn说明书)>-CSDN博客 在启动scrapy-redis后,往redis丢入url网址的时候遇到: TypeError: ExecutionEngine.crawl() got an unexpected …

.Net FrameWork总结

.Net FrameWork总结 介绍.Net公共语言运行库CLI的组成.NET Framework的主要组成.NET Framework的优点CLR在运行期管理程序的执行,包括以下内容CLR提供的服务FCL的组成 或 服务(这个其实就是我们编码时常用到的类库):(下…

计算机视觉与自然语言处理(Open AI)

1.语音识别技术 语音识别是将语音转换为文本的技术, 是自然语言处理的一个分支。通过特征的提取、模式的匹配将语音信号变为文本或命令,以实现机器识别和理解语音。 按照应用场景的不同,可以大致分为三类; • 电信级系统应用&…
最新文章