1.图像是慕斯?
计算机“看到”的图像其实是一个一个像素点构成的,每个像素点都有对应的数值。 所以图像时结构化存储的数据信息。
图像属性:
通道数目:一般的RGB图片,通道数目(channels) 是3个(红、绿、蓝);而monochrome图片,通道数目(channels)是1。
高与宽:高度是图像竖向的长度, 宽度是图像横向的长度
像素数据:就是图像每个像素点的值
图像类型:图像在计算机显示的类型有二值图像、灰度图像、彩色图像(伪彩色图像和真彩色图像)
2.获取图像的详细信息
#coding:utf-8
#file: tutorial_1.py
#@author: young
#@contact: [email protected]
#@time: 2019/12/13 23:17
#coding:utf-8
#file: test.py.py
#@author: young
#@contact: [email protected]
#@time: 2019/12/13 16:37
import cv2 as cv
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("lena.jpg")
get_image_info(src)
cv.imshow("input mages",src)
cv.waitKey(0)
cv.destroyAllWindows()
类型是numpy的n维数组
图片的高和宽都是512,深度是3
总像素数据大小是786432
每个通道的像素点占的位数是uint8(无符号int8位)
像素的详细数据
3.获取自个家摄像头的画面
def video_demo():
capture = cv.VideoCapture(0)
#VideoCapture函数:打开摄像头设备,参数为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)
#waitKey(50)将显示一个框架。50毫秒后,显示将自动关闭。(如果你把它放到一个循环中去读。视频,它将显示视频帧逐帧。
if c == 27:
#27对应ASCII中的ESC,如果键盘输入ESC键,则会退出整个循环
break
可以按ESC键之后,按0键结束程序,或者直接点击pycharm中的红色停止按钮停止程序。
4.保存图片
src = cv.imread("lena.jpg")
get_image_info(src)
cv.imshow("input mages",src)
gray = cv.cvtColor(src,cv.COLOR_BGR2GRAY)
#转化为灰色
cv.imwrite("D:/lena.jpg",gray)
#保存图片
cv.waitKey(0)
cv.destroyAllWindows()