上次咱们测试了搭建的开发环境,如今咱们详细讲一下,怎么读取图片并显示出来以及图片的保存和摄像头的调用python
计算机“看到”的图像实际上是一个一个像素点构成的,每一个像素点都有对应的数值。 因此图像时结构化存储的数据信息。chrome
下面经过代码来获取图像的详细信息,包括图像的形状、类型、大小、数据类型和像素值。
下面是获取图像信息的函数:数组
def get_image_info(image): print("图像的类型:", type(image)) print("图像的形状:", image.shape) print("图像的大小:", image.size) print("图像的数据类型:", image.dtype) pixel_data = np.array(image) print("图像的像素值:", pixel_data)
完整代码:ide
import cv2 as cv import numpy as np def get_image_info(image): print("图像的类型:", type(image)) print("图像的形状:", image.shape) print("图像的大小:", image.size) print("图像的数据类型:", image.dtype) pixel_data = np.array(image) print("图像的像素值:", pixel_data) print("----------hello python----------") src = cv.imread("E:/image.jpg") # 读取图像,注意使用本身图像的路径 get_image_info(src) # 获取传入图像的详细信息 cv.waitKey(0) # 等待键盘输入,目的是让程序停在这里不立刻关闭 cv.destroyAllWindows() # 销毁该程序下的全部窗口
下面是我测试获得的结果: 函数
从运行的结果能够看出,这个图像的类型是numpy.ndarray,这是python中numpy库里面的多维数组, 图像形状是(613, 573, 3),说明图像的高度是613,宽度是573,通道数是3。图像的大小是1053747,这个数据是由以前的图像形状计算而来,6135733=1053747,由1053747个像素组成。图像的数据是uint8格式的,每一个像素点所占的大小是无符号8位的。图像的像素值在图中能够看到是有许多0到255之间的数构成的三维数组。测试
摄像头代码:ui
def video_demo(): capture = cv.VideoCapture(0) # 打开摄像头设备,参数为0表示使用第一个设备,若是有多个设备能够修改参数,选择使用的设备 while True: ret, frame = capture.read() # ret表示返回的信息,frame表示视频中的每一帧 frame = cv.flip(frame, 1) """ 翻转 0:沿X轴翻转(垂直翻转) 大于0:沿Y轴翻转(水平翻转) 小于0:先沿X轴翻转,再沿Y轴翻转,等价于旋转180° 若是不加这一句代码,摄像头显示的画面是相反的,能够试一试效果 """ cv.imshow("video", frame) # 使用一个窗口来显示摄像头的内容 c = cv.waitKey(50) # 等待50毫秒 if c == 27: # 27对应ASCII中的ESC,若是键盘输入ESC键,则会退出整个循环 break
完整代码:3d
import cv2 as cv import numpy as np def video_demo(): capture = cv.VideoCapture(0) # 打开摄像头设备,参数为0表示使用第一个设备,若是有多个设备能够修改参数,选择使用的设备 while True: ret, frame = capture.read() # ret表示返回的信息,frame表示视频中的每一帧 frame = cv.flip(frame, 1) """ 翻转 0:沿X轴翻转(垂直翻转) 大于0:沿Y轴翻转(水平翻转) 小于0:先沿X轴翻转,再沿Y轴翻转,等价于旋转180° 若是不加这一句代码,摄像头显示的画面是相反的,能够试一试效果 """ cv.imshow("video", frame) # 使用一个窗口来显示摄像头的内容 c = cv.waitKey(50) # 等待50毫秒 if c == 27: # 27对应ASCII中的ESC,若是键盘输入ESC键,则会退出整个循环 break print("----------hello python----------") video_demo() cv.waitKey(0) cv.destroyAllWindows()
测试结果:code
能够按ESC键以后,按0键结束程序,或者直接点击pycharm中的红色中止按钮中止程序。视频
保存图片的操做很简单,只需几行代码
print("----------hello python----------") src = cv.imread("E:/image.jpg") cv.imshow("input image", src) gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY) # 转化为灰色 cv.imwrite("E:/image1.jpg", gray) # 保存图片 cv.waitKey(0) cv.destroyAllWindows()
保存的图片在E盘的根目录下 效果以下: