python-opencv学习二:图像的相关操作(读入、显示、保存)

一、关于OpenCV简介

       OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。 OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然保留了大量的C语言接口。

       在计算机视觉项目的开发中,OpenCV作为较大众的开源库,拥有了丰富的常用图像处理函数库,采用C/C++语言编写,可以运行在Linux/Windows/Mac等操作系统上,能够快速的实现一些图像处理和识别的任务。此外,OpenCV还提供了Java、python、cuda等的使用接口、机器学习的基础算法调用,从而使得图像处理和图像分析变得更加易于上手,让开发人员更多的精力花在算法的设计上。

二、OpenCV应用领域

1、计算机视觉领域方向

    1、人机互动
    2、物体识别
    3、图像分割
    4、人脸识别
    5、动作识别
    6、运动跟踪
    7、机器人
    8、运动分析
    9、机器视觉
    10、结构分析
    11、汽车安全驾驶

2、计算机操作底层技术

    图像数据的操作: 分配、释放、复制、设置和转换。 图像是视频的输入输出I/O ,文件与摄像头的输入、图像和视频文件输出)。
     矩阵和向量的操作以及线性代数的算法程序:矩阵积、解方程、特征值以及奇异值等。
    各种动态数据结构:列表、队列、集合、树、图等。
    基本的数字图像处理:滤波、边缘检测、角点检测、采样与差值、色彩转换、形态操作、直方图、图像金字塔等。
    结构分析:连接部件、轮廓处理、距离变换、各自距计算、模板匹配、Hough变换、多边形逼近、直线拟合、椭圆拟合、Delaunay 三角划分等。
    摄像头定标:发现与跟踪定标模式、定标、基本矩阵估计、齐次矩阵估计、立体对应。
    运动分析:光流、运动分割、跟踪。
    目标识别:特征法、隐马尔可夫模型:HMM。
    基本的GUI:图像与视频显示、键盘和鼠标事件处理、滚动条。
    图像标注:线、二次曲线、多边形、画文字。

三、opencv中对图片的操作

1、读取图像:

 cv2.imread()

 #读取图像 IMREAD_COLOR:读入一副彩色图像。IMREAD_GRAYSCALE:以灰度模式读入图像
    img = cv2.imread("1.jpg",cv2.IMREAD_COLOR)

2、显示图像:

 cv2.imshow()

#显示图像(窗口名字,要显示的图片)
  cv2.imshow("picture",img)

3、保存图像:

 cv2.imwrite()

 cv2.imwrite('messigray.png',img)

完整代码:

'''
使用opencv 显示图像
'''
import cv2

if __name__ == "__main__":
    #读取图像 IMREAD_COLOR:读入一副彩色图像。IMREAD_GRAYSCALE:以灰度模式读入图像
    img = cv2.imread("1.jpg",cv2.IMREAD_COLOR)
    #显示图像(窗口名字,要显示的图片)
    cv2.imshow("picture",img)
    k = cv2.waitKey(0)
    # 按下esc不保存退出
    if k == 27:
        cv2.destroyAllWindows()
    # 按下ctrl+s 保存退出
    elif k == ord('s'):
        cv2.imwrite('messigray.png', img)
        cv2.destroyAllWindows()

结果展示:

python-opencv学习二:图像的相关操作(读入、显示、保存)_第1张图片

4、使用 Matplotlib显示图片

plt.imshow(img, cmap = 'gray', interpolation = 'bicubic')

注意此处需要用到 matplotlib 库,记得使用pip install matplotlib下载安装。(如果使用pip下载较慢,建议更改pip镜像源。)

不会更改镜像源的请参考:https://blog.csdn.net/weixin_40928253/article/details/89786547

代码如下:

'''
使用 Matplotlib显示图片
'''
import cv2
from matplotlib import pyplot as plt


if __name__ == "__main__":
    img = cv2.imread('1.jpg',0)
    plt.imshow(img, cmap = 'gray', interpolation = 'bicubic')
    plt.xticks([]), plt.yticks([])  # to hide tick values on X and Y axis
    plt.show()

5、使用 Matplotlib显示图片并进行一些操作

import cv2
from matplotlib import pyplot as plt

if __name__ == "__main__":
    img = cv2.imread('2.jpg')
    edges = cv2.Canny(img,100,200)

    plt.subplot(121),plt.imshow(img,cmap = 'gray')
    plt.title('Original Image'), plt.xticks([]), plt.yticks([])
    plt.subplot(122),plt.imshow(edges,cmap = 'gray')
    plt.title('Edge Image'), plt.xticks([]), plt.yticks([])
    plt.show()

效果如下:

python-opencv学习二:图像的相关操作(读入、显示、保存)_第2张图片

 

关于opencv对图片的操作暂时只了解到这么多。 :)

你可能感兴趣的:(opencv-python,opencv入门)