OpenCV入门-基于Python(上)

简介: OpenCV入门-基于Python

1. 创建窗口

进行图像操作时,我们要用窗口来显示对图像所进行的操作。用窗口来观察操作前后的效果。

namedWindow()

创建一个新窗口

cv2.namedWindow(winname,图像格式)

winname:创建的窗口名字

图像格式:WINDOW_NORMAL :可以改变窗口大小。WINDOW_AUTOSIZE:自动适应窗口大小,不能自己改变窗口大小。

resizeWindow()

修改窗口大小

cv2.resizeWindow(winname,width,height)

winname:修改的窗口名字

width:宽

height:高

destroyAllWindow()

销毁所有窗口无参数。

cv2.destroyAllWindow()

销毁指定窗口,参数为窗口名。

cv2.destroyWindow(winname)

2.显示图像

在窗口创建好之后,我们就可以通过窗口,把图像显示出来。

imread()

读取指定路径的图像

cv2.imread(path,flag=cv2.IMREAD_COLOR)

path:读取文件的路径

flag:读取图像的方式。cv2.IMREAD_COLOR(加载彩色图像,默认标志 ) 、cv2.IMREAD_GRAYSCALE(灰度模式加载图像)、cv2.IMREAD_UNCHANGED:加载图像,包括alpha通道。

这三种标志可分别用1、0、-1代替。

返回值为mat

imshow()

在窗口中显示图像

cv2.imshow(winname,mat)

指定winname窗口,显示mat对象。

imwrite()

将图像保存起来

cv2.imwrie(path,mat)

path:保存图像的路径

mat:将要保存图像的信息。

waitKey()

窗口显示时间(让窗口等一下,我要输入数据)

cv2.waitKey(time)

time:窗口等待的时间,单位ms,time=0,那么一直等待输入数据。

返回值 用户从键盘输入的ASCII码值。

flip()

将图像进行垂直,水平翻折

cv2.flip(mat,-1/0/1)

mat:就是进行翻折的图片帧

-1:x+y轴翻折、0:x轴翻折、1:y轴翻折

返回值 是翻折之后的图片

代码演示

import cv2
'''
前面代码统一演示示例:
'''
#创建窗口
cv2.namedWindow('flower',cv2.WINDOW_NORMAL)
#修改窗口大小
cv2.resizeWindow('flower', 640, 480)
# 彩色方式读取图片文件,用img来接收
img = cv2.imread('./image/girl.png',1)
# 显示图像
cv2.imshow('flower',img)
# 保存图像
cv2.imwrite('./image/flower1.png', img)
# 一直显示,等待用户输入数据
cv2.waitKey(0)
# 销毁窗口
cv2.destroyWindow('flower')

3.显示视频

需要用到视频操作的相关接口,OpenCV提供了VideoCapure()对象,用来进行相关操作。

VideoCapure()对象

视频捕获的对象

cap = cv2.VIdeoCapure(path/数字01)

创建好后,cap就是一个视频操作的对象(以后都用cap来表示)

path:读取视频文件需要放视频文件的完整路径

数字0/1:0是默认电脑摄像头。

cap.get()

获得视频帧中的属性

cap.get(propld)

propld:3表示宽度,4表示高度,5表示帧率

返回值由输入的数据决定

cap.isOpened()

用来检查创建的对象,是否已经成功打开

cap.isOpened()

返回值是一个boll值,True表示成功打开,否则打开失败

cap.read()

从捕获的摄像头或者视频帧中读取视频帧。

cap.read()

两个返回值,第一个boll值,代表该帧是否正确读取到,第二个返回值是该帧的数据(mat)

cap.release()

释放cap对象捕获的设备

cap.release()

部分功能代码演示

import cv2
# 创建一个窗口
cv2.namedWindow('video', cv2.WINDOW_NORMAL)
# 创建一个视频对象
cap = cv2.VideoCapture(0)
# 检查是否打开
if not cap.isOpened():
    print('Video opened failed')
    exit(-1)
# 获取视频帧的宽和高
print(cap.get(3))
print(cap.get(4))
while True:
    # 读取视频帧
    ret, frame = cap.read()
    if not ret:
        print('视频帧读取有误!')
        break
    # 显示视频帧
    cv2.imshow('video', frame)
    key = cv2.waitKey(10)
    # 按q退出,按s保存
    if (key & 0xff) == ord('q'):
        print('退出成功')
        break
# 释放资源
cv2.destroyAllWindows()
cap.release()

VideoWriter()对象

创建一个保存视频的对象,定义好path、编码格式、帧数、视频帧大小,是否是彩色格式(默认为彩色)

out = cv2.VideoWriter(filename,fourcc,fps,frameSize,[IsColor])

filename:视频的路径和文件名

fourcc:压缩帧的4字符编/解码器的选项

fps:视频的帧数

frameSize:视频帧的大小(width,height)

VideoWriter_fourcc()

用来设置编/解码器。

fourcc = cv2.VideoWriter_fourcc(*‘字符串’)

参数:适合编码的各种缩写,-1为自动匹配合适的编/解码器。

write()

先将视频帧编码,之后再将视频帧写入要保存的路径中

out.write(mat)

mat:保存的视频帧

release()

释放类,并且把缓冲区的数据强制编码,再输出成文件。

out.release()

部分代码展示:

读取视频仅仅需要将创建视频的对象,修改成读取的文件路径即可

import cv2
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
# 创建一个窗口
cv2.namedWindow('video', cv2.WINDOW_NORMAL)
# 创建一个输出对象
out = cv2.VideoWriter('./video/out.mp4', fourcc, 20, (640, 480))
# 创建一个视频对象
cap = cv2.VideoCapture(0)
# 检查是否打开
if not cap.isOpened():
    print('Video opened failed')
    exit(-1)
# 获取视频帧的宽和高
print(cap.get(3))
print(cap.get(4))
while True:
    # 读取视频帧
    ret, frame = cap.read()
    if not ret:
        print('视频帧读取有误!')
        break
    # 将视频帧反转保存并显示视频帧
    frame = cv2.flip(frame, 1)
    out.write(frame)
    cv2.imshow('video', frame)
    key = cv2.waitKey(1000//20)
    # 按q退出
    if (key & 0xff) == ord('q'):
        print('退出成功')
        break
# 释放资源
cv2.destroyAllWindows()
out.release()
cap.release()

4.鼠标控制

可以在图像中控制鼠标来进行一些操作。

setMouseCallBack()

设置鼠标回调函数

cv2.setMouseCallBack(winname,callback,uerdata)

winname:在哪个窗口调用这个函数

callback:回调函数,需要用户自己设置,用来完成一些事件。

uerdata:用户自己额外传送的数据。

callback()

自己定义的一个函数

def callback(event,x,y,flags,uerdata)

event:鼠标进行的动作

flags:键盘进行的动作

(x,y):鼠标的横纵坐标

uerdata:调用这个函数的数据。

event:

flags:

部分代码展示:

import cv2
import numpy as np
def mouse_back(event, x, y, flags, uerdata):
    print(event, x, y, flags, uerdata)
# 创建窗口,并且调整大小
cv2.namedWindow('mouse',cv2.WINDOW_NORMAL)
cv2.resizeWindow('mouse', 640, 480)
# 设置鼠标回调
cv2.setMouseCallback('mouse',mouse_back,'1111')
#创建一个纯黑的图像,行数,列数,几个通道,图片格式
img = np.zeros((480, 640, 3), np.uint8)
while True:
    cv2.imshow('mouse',img)
    key = cv2.waitKey(10)
    if key & 0xFF == ord('q'):
        print('退出成功')
        break
# 销毁资源
cv2.destroyAllWindows()


目录
相关文章
|
28天前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
1月前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python进行数据分析的入门指南
本文将引导读者了解如何使用Python进行数据分析,从安装必要的库到执行基础的数据操作和可视化。通过本文的学习,你将能够开始自己的数据分析之旅,并掌握如何利用Python来揭示数据背后的故事。
|
29天前
|
IDE 程序员 开发工具
Python编程入门:打造你的第一个程序
迈出编程的第一步,就像在未知的海洋中航行。本文是你启航的指南针,带你了解Python这门语言的魅力所在,并手把手教你构建第一个属于自己的程序。从安装环境到编写代码,我们将一步步走过这段旅程。准备好了吗?让我们开始吧!
|
28天前
|
测试技术 开发者 Python
探索Python中的装饰器:从入门到实践
装饰器,在Python中是一块强大的语法糖,它允许我们在不修改原函数代码的情况下增加额外的功能。本文将通过简单易懂的语言和实例,带你一步步了解装饰器的基本概念、使用方法以及如何自定义装饰器。我们还将探讨装饰器在实战中的应用,让你能够在实际编程中灵活运用这一技术。
38 7
|
30天前
|
开发者 Python
Python中的装饰器:从入门到实践
本文将深入探讨Python的装饰器,这一强大工具允许开发者在不修改现有函数代码的情况下增加额外的功能。我们将通过实例学习如何创建和应用装饰器,并探索它们背后的原理和高级用法。
42 5
|
28天前
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
70 3
|
1月前
|
Python
Python编程入门:从零开始的代码旅程
本文是一篇针对Python编程初学者的入门指南,将介绍Python的基本语法、数据类型、控制结构以及函数等概念。文章旨在帮助读者快速掌握Python编程的基础知识,并能够编写简单的Python程序。通过本文的学习,读者将能够理解Python代码的基本结构和逻辑,为进一步深入学习打下坚实的基础。
|
8月前
|
人工智能 Java Python
python入门(二)安装第三方包
python入门(二)安装第三方包
108 1
|
3月前
|
机器学习/深度学习 Python
【10月更文挑战第5天】「Mac上学Python 6」入门篇6 - 安装与使用Anaconda
本篇将详细介绍如何在Mac系统上安装和配置Anaconda,如何创建虚拟环境,并学习如何使用 `pip` 和 `conda` 管理Python包,直到成功运行第一个Python程序。通过本篇,您将学会如何高效地使用Anaconda创建和管理虚拟环境,并使用Python开发。
84 4
【10月更文挑战第5天】「Mac上学Python 6」入门篇6 - 安装与使用Anaconda
|
3月前
|
IDE 开发工具 iOS开发
【10月更文挑战第3天】「Mac上学Python 3」入门篇3 - 安装Python与开发环境配置
本篇将详细介绍如何在Mac系统上安装Python,并配置Python开发环境。内容涵盖Python的安装、pip包管理工具的配置与国内镜像源替换、安装与配置PyCharm开发工具,以及通过PyCharm编写并运行第一个Python程序。通过本篇的学习,用户将完成Python开发环境的搭建,为后续的Python编程工作打下基础。
273 2
【10月更文挑战第3天】「Mac上学Python 3」入门篇3 - 安装Python与开发环境配置