Python+OpenCV 零基础学习笔记(4-5):计算机图形基础+Python相对文件路径+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简单使用

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

python 复制代码
import cv2
import sys

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

这个是我本地的运行结果,如果运行成功则说明环境配置正确

图形读取

cat.png

文件路径

文件读取

python 复制代码
#%%
import cv2
import matplotlib.pyplot as plt
import numpy as np

img = cv2.imread(r'cat.png')
print(img)
# %%

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

目前的路径是

  • OpenCV_Python

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

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

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

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

图像显示+保存

python 复制代码
#%%
#%%
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主。

我这里随便找了一个

卓特视觉视频素材

然后下载器里面下载

下载成功

简单视频读取

python 复制代码
# %%
# 导入包
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零基础入门教程

相关推荐
喵手10 小时前
Python爬虫实战:京东/淘宝搜索多页爬虫实战 - 从反爬对抗到数据入库的完整工程化方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·京东淘宝页面数据采集·反爬对抗到数据入库·采集结果csv导出
B站_计算机毕业设计之家10 小时前
猫眼电影数据可视化与智能分析平台 | Python Flask框架 Echarts 推荐算法 爬虫 大数据 毕业设计源码
python·机器学习·信息可视化·flask·毕业设计·echarts·推荐算法
PPPPPaPeR.11 小时前
光学算法实战:深度解析镜片厚度对前后表面折射/反射的影响(纯Python实现)
开发语言·python·数码相机·算法
JaydenAI11 小时前
[拆解LangChain执行引擎] ManagedValue——一种特殊的只读虚拟通道
python·langchain
骇城迷影11 小时前
Makemore 核心面试题大汇总
人工智能·pytorch·python·深度学习·线性回归
长安牧笛11 小时前
反传统学习APP,摒弃固定课程顺序,根据用户做题正确性,学习速度,动态调整课程难度,比如某知识点学不会,自动推荐基础讲解和练习题,学习后再进阶,不搞一刀切。
python·编程语言
码界筑梦坊11 小时前
330-基于Python的社交媒体舆情监控系统
python·mysql·信息可视化·数据分析·django·毕业设计·echarts
试着11 小时前
【huawei】机考整理
学习·华为·面试·机试
風清掦11 小时前
【江科大STM32学习笔记-05】EXTI外部中断11
笔记·stm32·学习