• Python机器视觉--OpenCV入门--OpencCV的安装与图片加载显示


    1. 安装OpenCV

    执行pip install opencv-python==3.4.1.15, 3.4.2之后有些算法申请了专利,用不了了.(使用其他版本也可以)

    安装opencv扩展包(选装): pip install opencv-contrib-python==3.4.1.15 (扩展包最好与cv版本对应)

    如果装不了去:https://www.lfd.uci.edu/~gohlke/pythonlibs/下载相应的包手动安装.

    pip install opencv-python3.4.1.15 opencv-contrib-python3.4.1.15 jupyter matplotlib -i https://pypi.douban.com/simple (这里使用了豆瓣源镜像,可根据需求更换其他源镜像)

    2. 图像的加载和显示

    2.1 创建和显示窗口

    • namedWindow() 创建命名窗口

    • imshow() 显示窗口

    • destroyAllwindws() 摧毁窗口

    • resizeWindow() 改变窗口大小

    • waitKey() 等待用户输入

    import c2
    
    # cv2.namedWindow('new', cv2.WINDOW_AUTOSIZE)
    # WINDOW_NORMAL可以让窗口大小变得可以调节
    cv2.namedWindow('new', cv2.WINDOW_NORMAL)
    # 修改窗口大小
    cv2.resizeWindow('new', 1920, 1080)
    cv2.imshow('new', 0)
    # waitKey方法表示等待按键, 0表示任何按键, 
    #其他整数表示等待按键的时间,单位是毫秒, 超过时间没有发生按键操作窗口会自动关闭.
    # 会返回按键的ascii的值
    key = cv2.waitKey(0)
    if key == ord('q'):
        cv2.destroyAllWindows()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    2.2 加载显示图片

    • imread(path, flag): 使用imread可以读取图片, 默认读取的是彩色图片.比如:
    # 导入opencv包
    import cv2
    import matplotlib.pyplot as plt
    import numpy as np
    
    # 读取图片
    img = cv2.imread('./cat.jpeg')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 原图长这样:

    请添加图片描述
    对比一下使用matplotlib读取显示的图片( plt.imshow(img) ) , 长这样:
    请添加图片描述

    发现这个猫的样子没变, 但是颜色不太对, 这是因为OpenCV读取的图片颜色通道是按照BGR(蓝绿红)排列的, 一般图片通道都是按照RGB来排列的.为了正常的显示猫的图片, 我们要用OpenCV的图像显示方法:

    cv2.imshow('cat', img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    • 1
    • 2
    • 3

    小知识 我们可以把显示图片的方法封装成一个函数方便我们显示图片:

    def cv_show(name, img):
        cv2.imshow(name, img)
        cv2.waitKey(0)
        cv2.destroyAllWindows()
    
    • 1
    • 2
    • 3
    • 4

    2.3 保存图片

    • imwrite(path, img): 使用imwrite保存图片.
    import cv2
    
    cv2.namedWindow('img', cv2.WINDOW_NORMAL)
    cv2.resizeWindow('img', 320, 240)
    
    img = cv2.imread("./cat.jpeg")
    
    # 利用while循环优化退出逻辑
    while True:
        cv2.imshow('img', img)
        key = cv2.waitKey(0)
        if(key & 0xFF == ord('q')):
            break
        elif(key & 0xFF == ord('s')):
            cv2.imwrite("./123.png", img)
        else:
            print(key)
    
    cv2.destroyAllWindows()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    至此,OpenCV的安装与简单测试就已经完成啦

  • 相关阅读:
    【SpringBoot】之自动配置原理分析(源码级别)
    c#设计模式-结构型模式 之 享元模式
    nginx反向代理与负载均衡以及高可用
    『亚马逊云科技产品测评』活动征文|如何搭建低成本亚马逊aws云服务器
    dubbo之奇怪的问题---No such application config Please add dubbo application name=
    .NET 6学习笔记(1)——通过FileStream实现不同进程对单一文件的同时读写
    相机类型的分辨率长宽、靶面尺寸大小、像元大小汇总
    浅析ARMv8体系结构:异常处理机制
    Codeforces Round 900 (Div. 3)--E. Iva & Pav(前缀和+二分)
    spring cloud 应用框架
  • 原文地址:https://blog.csdn.net/qq_43944517/article/details/126206453