Python手势识别第一天

目录

1、需要用到的图像放哪里?

2、读取显示、保存图像:

(1)cv2.imread()函数用于读取图像RGB信息

(2)cv2.imshow()

(3)cv2.imwrite()

 3、数据读取-视频

 (1)cv2.VideoCapture()

(2)ret,frame = cap.read()

(3)cv2.cvtColor() 


1、需要用到的图像放哪里?

(1)在本工程下,新建一个文件夹,然后里面放需要用的图像就可。

(直接复制你要的图片,然后粘贴在你所创建的存放图像的文件夹里就可。比如我这里就是粘贴到 图像 文件夹里)

直接将图片拖到pycharm里的话,好像就是移动图像了,之前地方的图像就没了(我试的时候是这样,也就是默认拖动是移动,而不是复制)。

 

利用该种方法时,调用时的路径应这样写:'my_imgs/test.jpg'

(路径中不能有中文和敏感词,如\n、\t、\1、\2......!!!)

(2)利用绝对路径,如D:/.......(不能有中文和敏感词!!!)

(3)其实呢,随便放就可以,如果你不新建一个文件夹,直接放在本工程下,也是可以的,那么调用时的路径就直接是你图像的名称啦,如'test.jpg'  (反正无论如何,不能有中文和敏感词就对了)

2、读取显示、保存图像:

(1)cv2.imread()函数用于读取图像RGB信息

      彩色图像:cv2.IMREAD_COLOR

      灰度图像:cv2.IMREAD_GRAYSCALE

import cv2
import matplotlib.pyplot as plt
import  numpy as np
# matplotlib inline
img0 = cv2.imread('my_imgs/test.jpg', cv2.IMREAD_GRAYSCALE)   # 读取灰度图RGB信息
print(img0.shape)
img1 = cv2.imread('my_imgs/test.jpg', cv2.IMREAD_COLOR)   # 读取彩色图RGB信息
print(img1.shape)

结果: 

shape读取的三个参数分别是图片的高度、宽度、颜色通道(为3,则说明是彩色图,没有,则说明不是彩色图)

img.shape[:2] 取彩色图片的长、宽。
如果img.shape[:3] 则取彩色图片的长、宽、通道。

关于img.shape[0]、[1]、[2]
img.shape[0]:图像的垂直尺寸(高度)
img.shape[1]:图像的水平尺寸(宽度)
img.shape[2]:图像的通道数

在矩阵中,[0]就表示行数,[1]则表示列数。

Ps: opencv中读取的图像通道信息是BGR顺序的。

(2)cv2.imshow()

    cv2.imShow()函数可以在窗口中显示图像。该窗口和图像的原始大小自适应(自动调整到原始尺寸)。

    第一个参数是一个窗口名称(也就是我们对话框的名称),它是一个字符串类型。第二个参数是我们的图像。您可以创建任意数量的窗口,但必须使用不同的窗口名称。
 

import cv2
import matplotlib.pyplot as plt
import  numpy as np

img0 = cv2.imread('my_imgs/test.jpg', cv2.IMREAD_GRAYSCALE)   # 读取灰度图RGB信息,没有第二个参数,默认为彩色图
img1 = cv2.imread('my_imgs/test.jpg', cv2.IMREAD_COLOR)   # 读取彩色图RGB信息

cv2.imshow('img0', img0)
cv2.imshow('img1', img1)
cv2.waitKey(0)
cv2.destroyAllWindows()

cv2.waitKey(0): 是一个和键盘绑定的函数,它的作用是等待一个键盘的输入(因为我们创建的图片窗口如果没有这个函数的话会闪一下就消失了,所以如果需要让它持久输出,我们可以使用该函数)。它的参数是毫秒级。该函数等待任何键盘事件的指定毫秒。如果您在此期间按下任何键,程序将继续进行。我们也可以将其设置为一个特定的键。

         参数是1,表示延时1ms切换到下一帧图像,对于视频而言;

         参数为0,如cv2.waitKey(0)只显示当前帧图像,相当于视频暂停,;

         参数过大如cv2.waitKey(1000),对于一个图像而言,就是显示1s后自动关闭该图像窗口;对视频而言,会因为延时过久而卡顿感觉到卡顿,一帧显示1s。

         c得到的是键盘输入的ASCII码,esc键对应的ASCII码是27,即当按esc键是if条件句成立

        Ps:waitKey()方法本身表示等待键盘输入

cv2.destroyALLWindows():    销毁我们创建的所有窗口。如果要销毁任何特定窗口,请使用函数cv2.destroyWindow(),其中传递确切的窗口名称作为参数。(应该是使用创建窗口时所使用的窗口名称,字符串类型。)

注:

      我们还可以使用另一种方法来加载图片:先创建一个窗口,之后在需要的时候将图像加载到该窗口。

说明:在这种情况下,用cv2.namedWindow()函数可以指定窗口是否可以调整大小。在默认情况下,标志为cv2.WINDOW_AUTOSIZE。但是,如果指定标志为cv2.WINDOW_Normal,则可以调整窗口的大小。当图像尺寸太大,并在窗口中添加跟踪条时,这些操作可以让我们的工作更方便一点。

(3)cv2.imwrite()

cv2.imwrite(),保存图像,第一个参数为新图像保存路径,第二个参数为需要保存的图像名称

import cv2
img1 = cv2.imread('my_imgs/test.jpg', cv2.IMREAD_COLOR)   # 读取彩色图RGB信息
cv2.imwrite('my_imgs/test1.png', img1)

可以保存为不同类型的图片,如jpg格式的保存为png格式

 

 3、数据读取-视频

 (1)cv2.VideoCapture()

VideoCapture()中参数是0,表示打开笔记本的内置摄像头,参数是视频文件路径则打开视频,如cap = cv2.VideoCapture("../test.avi")

(2)ret,frame = cap.read()

 cap.read()按帧读取视频,ret,frame是获cap.read()方法的两个返回值。其中ret是布尔值,如果读取帧是正确的则返回True,如果文件读取到结尾,它的返回值就为False。frame就是每一帧的图像,是个三维矩阵。

(3)cv2.cvtColor() 

OpenCV-Python是旨在解决计算机视觉问题的Python绑定库。cv2.cvtColor()方法用于将图像从一种颜色空间转换为另一种颜色空间。 OpenCV提供了150多种color-space转换方法。我们将在下面使用一些颜色空间转换代码。

用法:cv2.cvtColor(src, code[, dst[, dstCn]])

参数:
src:它是要更改其色彩空间的图像。
code:它是色彩空间转换代码。
dst:它是与src图像大小和深度相同的输出图像。它是一个可选参数。
dstCn:它是目标图像中的频道数。如果参数为0,则通道数自动从src和代码得出。它是一个可选参数。

返回值:它返回一个图像

import cv2
vdo_path = "D:\HONOR Magic-link\Screenshot\mytest0.mp4"
vc00 = cv2.VideoCapture(vdo_path)
# 检查打开是否正确
if vc00.isOpened():
	is_open, frame = vc00.read()
else:
	is_open = False
while is_open:
	open_y, frame = vc00.read()  # 获取图像的帧
	if frame is None:
		break
	if open_y is True:
		# 将图像从一种颜色空间转换为另一种颜色空间
		gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
		cv2.namedWindow('result', cv2.WINDOW_NORMAL)  # 可调窗口大小
		cv2.imshow('result', gray)   # 展示
		if cv2.waitKey(1) & 0xFF == 27:
			break
vc00.release()  # 调用release()释放摄像头
cv2.destroyAllWindows()

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

碱水丸子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值