Python手势识别第一天

Python手势识别第一天,第1张

目录

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/xi.jpg'

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

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

(3)其实呢,随便放就可以,如果你不新建一个文件夹,直接放在本工程下,也是可以的,那么调用时的路径就直接是你图像的名称啦,如'xi.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/xi.jpg', cv2.IMREAD_GRAYSCALE)   # 读取灰度图RGB信息
print(img0.shape)
img1 = cv2.imread('my_imgs/xi.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/xi.jpg', cv2.IMREAD_GRAYSCALE)   # 读取灰度图RGB信息,没有第二个参数,默认为彩色图
img1 = cv2.imread('my_imgs/xi.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/xi.jpg', cv2.IMREAD_COLOR)   # 读取彩色图RGB信息
cv2.imwrite('my_imgs/xidada.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()

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/578385.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-11
下一篇 2022-04-11

发表评论

登录后才能评论

评论列表(0条)

保存