python|python手部识别中的问题及笔记第一弹 21 7 13

一.调用笔记本电脑得摄像头
错误代码展示

import cv2 #import mediapipe as mp #importtimecap = cv2.VideoCapture(1)#创建视频对象,摄像头编号设为1while True: success,img = cap.read()# sucess是布尔型,读取帧正确返回True; img是每一帧的图像(BGR存储格式) cv2.imshow("Image",img) cv2.waitKey(1)

出现得报错内容
File "C:\shujia\shoubushibie\handmin.py", line 9, in cv2.imshow("Image",img) cv2.error: OpenCV(4.5.3) C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-1i5nllza\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'

找了好久才发现问题是 笔记本摄像头编号要是0才可以,如果有其他的摄像头可以调整参数为1,2
即第五行
cap = cv2.VideoCapture(0)#创建视频对象,笔记本摄像头编号设为0其余可以是1或者2

二.图像知识
一般的彩色图像是三通道(RGB),也就是Red,Green,Blue 三个通道。灰度图是单通道,单通道中的每个像素的值介于0~255之间,代表黑色(0)到白色(255)之间的灰度程度。黑白图像指的是二值图,每个像素非黑即白,黑是0, 白是1。通常也会用灰度图来表示二值图,黑是0, 白是255,图像中像素值不是0就是255,没有介于中间的其他值。需要特别注意的是图片读出来的格式是BGR,不是我们最常见的RGB格式,颜色肯定有区别。需要转换。
①cv2.imread()接口读图像,读进来直接是BGR 格式数据格式在 0~255
②cv2.cvtColor(p1,p2) 是颜色空间转换函数,p1是需要转换的图片,p2是转换成何种格式。
例如:cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
将BGR格式转换成RGB格式
cv2.cvtColor(img,cv2.COLOR_BGR2GRAY )
将BGR格式转换成灰度图片
三.部分函数表达得意思
① success, image = vid_cap.read()
while True: success, img = vid_cap.read()

该函数输出的是两个参数,第一个参数success 为True 或者False,代表有没有读取到图片第二个参数 image 表示截取到一帧的图片。
② cv2.imShow()
该函数可以在窗口中显示图像
例如:cv2.imshow("Image", img)两个参数:窗口名称,我们得图像
③cv2.waitKey(delay)
该函数是一个和键盘绑定的函数,它的作用是等待一个键盘的输入我们也可以将其设置为一个特定的键。
例如:
keypress = cv2.waitKey(1) if keypress & 0xFF == 27: break

【python|python手部识别中的问题及笔记第一弹 21 7 13】等待期间有按键:返回按键的ASCII码(比如:Esc的ASCII码27);等待期间没有按键:返回 -1;可以用特殊键结束进程

    推荐阅读