opencv基础学习笔记--图像加载和保存

图像加载和保存

上次咱们测试了搭建的开发环境,如今咱们详细讲一下,怎么读取图片并显示出来以及图片的保存和摄像头的调用python


1.什么是图像

计算机“看到”的图像实际上是一个一个像素点构成的,每一个像素点都有对应的数值。 因此图像时结构化存储的数据信息。chrome

  • 图像属性:
    • 通道数目:通常的RGB图片,通道数目(channels) 是3个(红、绿、蓝);而monochrome图片,通道数目(channels)是1。
    • 高与宽:顾名思义,高度是图像竖向的长度, 宽度是图像横向的长度
    • 像素数据:就是图像每一个像素点的值
    • 图像类型:图像在计算机显示的类型有二值图像、灰度图像、彩色图像(伪彩色图像和真彩色图像)

2.获取图像的详细信息

下面经过代码来获取图像的详细信息,包括图像的形状、类型、大小、数据类型和像素值。
下面是获取图像信息的函数:数组

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()  # 销毁该程序下的全部窗口

下面是我测试获得的结果: blog_opencv0109函数

从运行的结果能够看出,这个图像的类型是numpy.ndarray,这是python中numpy库里面的多维数组, 图像形状是(613, 573, 3),说明图像的高度是613,宽度是573,通道数是3。图像的大小是1053747,这个数据是由以前的图像形状计算而来,6135733=1053747,由1053747个像素组成。图像的数据是uint8格式的,每一个像素点所占的大小是无符号8位的。图像的像素值在图中能够看到是有许多0到255之间的数构成的三维数组。测试

3.获取摄像头的画面

摄像头代码: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

blog_opencv0110

能够按ESC键以后,按0键结束程序,或者直接点击pycharm中的红色中止按钮中止程序。视频

4.将读取的图片转换为灰色图片并保存图片

保存图片的操做很简单,只需几行代码

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盘的根目录下 效果以下: blog_opencv0111

相关文章
相关标签/搜索