目录
- 1 核心功能模块
- 2 如何打开或保存一张图片
- 3 如何获取图像的信息(通道数,高与宽,像素数据)
- 3 如何得到摄像头(视频)数据流
1 核心功能模块
opencv-python
:即opencv的python版本核心模块,几乎所有的opencv功能皆基于此功能包。(安装方法这里就不详细阐述了,pip install opencv-python 即可)
引入方法:import cv2 as cv
numpy
:由于opencv将所读取到的所有图像信息皆以numpy.adarray进行组织,numpy功能模块将作为我们进行图像处理的重要工具。
引入方法:import numpy as np
2 如何打开或保存一张图片
打开一张图片:
# cv.imread方法接收图片路径,解读图片为numpy.ndarray保存在src中
src = cv.imread("../1.png")
# cv.imshow函数接收1.窗口名以及2.图片资源
cv.imshow("The_Window_name", src)
如何保存一张图片:
# cv.imwrite函数接收1.保存路径及文件名(后缀名自动解析并保存),2.图片资源
cv.imwrite("resule.png", src)
3 如何获取图像的信息(通道数,高与宽,像素数据)
由于opencv将图片组织为numpy.ndarray的形式,因此可以很轻松的获取图像的基本信息:
def get_image_info(image):
# cv将图像组织称numpy.ndarray的形式
print(type(image))
# 打印图像的维度信息,(高, 宽, Ch)
print(image.shape)
# 打印高*宽*Ch
print(image.size)
# 打印每位数据的类型
print(image.dtype)
# 使用numpy获取数据
pixel_data = np.array(image)
print(pixel_data)
3 如何得到摄像头(视频)数据流
需要注意的是:opencv进行的是图像处理,因此无论是获取摄像头的视频流还是打开视频获取信息,都是不会附加音频的,是纯图像信息
def show_video():
# cv.VideoCapture方法用于接收来自摄像头的数据,数字0表示摄像头的index。这里同样可以接受视频的文件名。
capture = cv.VideoCapture(0)
while True:
# 读取来自摄像头的数据
ret, frame = capture.read()
# 进行一个简单的镜像翻转
frame = cv.flip(frame, 1)
cv.imshow("video", frame)
# 展示每帧时等待50ms,如果用户输入“esc”则退出循环(esc对应的ASCLL值为27)
c = cv.waitKey(100)
if c == 27:
break
总体概述:
import cv2 as cv
import numpy as np
def show_video():
# cv.VideoCapture方法用于接收来自摄像头的数据,数字0表示本机的默认摄像头
capture = cv.VideoCapture(0)
while True:
# 读取来自摄像头的数据
ret, frame = capture.read()
# 进行一个简单的镜像翻转
frame = cv.flip(frame, 1)
cv.imshow("video", frame)
# 展示每帧时等待50ms,如果用户输入“esc”则退出循环(esc对应的ASCLL值为27)
c = cv.waitKey(100)
if c == 27:
break
def get_image_info(image):
# cv将图像组织称numpy.ndarray的形式
print(type(image))
# 打印图像的维度信息,(高, 宽, Ch)
print(image.shape)
# 打印高*宽*Ch
print(image.size)
# 打印每位数据的类型
print(image.dtype)
# 使用numpy获取数据
pixel_data = np.array(image)
print(pixel_data)
src = cv.imread("../1.png")
cv.namedWindow("The Image", cv.WINDOW_AUTOSIZE)
cv.imshow("The Image", src)
cv.imwrite("result.png", src)
get_image_info(src)
show_video()
cv.waitKey(0)
cv.destroyAllWindows()