一、补充一下:
之前的图片是放在和代码一样的目录下,简称根目录,这样就可以直接输入所要读取的图片或者视频,无需指定其他路径,若要指定其他路径,最好别有中文。
二、导入包,numpy大概是用于定义数据类型以及做加减乘除与或非等运算的科学计数包(个人理解)。
#获取摄像头,图片的形状及显示
import cv2 as cv
import numpy as np #科学计数
三、定义一个读取摄像头以及显示函数:
1.cv.VideoCapture(0)代表读取自己电脑上的第0个摄像头,若有其他摄像头更改数字,括号里面也可以读取视频信息,只需指定视频存放的路径,如:读取我放在根目录下的1.mkv : cv.VideoCapture('1.mkv')
2.capture.read也就是cv.VideoCapture.read 他返回一个ret布尔值与frame图片数据帧,若图片读取一直成功ret为true,否则为false。这里参考了python中VideoCapture(),read(),waitKey()的使用 - 简书。
3.由于摄像头读取的图片是和实际上是相反的,所以使用cv.flip对图片数据帧进行镜像对换
cv.flip(参数1:输入图像数据, 参数2:返回值 , 参数3:<0 为x轴翻转 >0 y轴翻转 =0为xyz轴都翻转) 这里参考【OpenCV3】图像翻转——cv::flip()详解_guduruyu的专栏-CSDN博客_opencv图像翻转
4.显示图片后,延时50ms,c==27代表了键盘上的ESC键,当你按下这个键的时候退出显示。
def Video_demo():
capture = cv.VideoCapture(0) #0代表了第0个摄像头
while(True):
ret, frame = capture.read() #读取摄像头
frame = cv.flip(frame, 1) #镜像,左右调换
cv.imshow("video", frame)
c = cv.waitKey(50)
if c == 27:
break
运行结果如上图。
四、定义一个打印图片数据的函数,查看图片的形状,数据类型以及大小和类型等等
def get_image_info(image):
print(type(image)) #type为类型
print(image.shape) #shape形状
print(image.dtype) #dtype 为数据类型
print(image.size) #大小
pixel_data = np.array(image)
print(pixel_data)
最后运行的时候为这样
五、cv.imwrite("D:/result.png", src) 第一个参数为保存的路径,src为图像数据,
六.完整代码
#获取摄像头,图片的形状及显示
import cv2 as cv
import numpy as np #科学计数
def Video_demo():
capture = cv.VideoCapture(0) #0代表了第0个摄像头
while(True):
ret, frame = capture.read() #读取摄像头
frame = cv.flip(frame, 1) #镜像,左右调换
cv.imshow("video", frame)
c = cv.waitKey(50)
if c == 27:
break
def get_image_info(image):
print(type(image)) #type为类型
print(image.shape) #shape形状
print(image.dtype) #dtype 为数据类型
print(image.size) #大小
pixel_data = np.array(image)
print(pixel_data)
#读取图片,视频
src = cv.imread('1.jpg')
#cv.imshow("img", src)
Video_demo()
#cv.imwrite("D:/result.png", src) #保存的地方以及格式
get_image_info(src)
cv.waitKey(0)