目录

  • 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()