• OpenCV01


    一 简介

    opencv (open source computer vision library)是一个基于开源免费发行的跨平台计算机视觉库,可以运行在linux,window,Android,iOS等操作系统,轻量高效,由一系列的C函数和C++函数类构成,同时提供了python,ruby,matlab等接口,实现了图像处理和计算机视觉的诸多通用算法。由一些模块组成。

    opencv中的build和source文件夹

    build包括头文件include和x86和bin中的动态链接库dll,如果后面有d是debug版本,如果没有是release模块。

    头文件和模块是有点类似的,引入头文件导入dll动态链接库。lib是静态链接库,和动态是一一对应的。

    二 安装

    1. 首先配置环境变量,就运行前自动加载dll,配置opencv2和opencv3的,D:opencv2opencvuildx86vc11in;D:opencvuildx86vc11in

    2. 配置VS和opencv的环境依赖等

    a.单次项目配置

    项目——项目属性——配置属性

    VC++目录——1>包含目录(D:opencvuildinclude;D:opencvuildincludeopencv;D:opencvuildincludeopencv2;$(IncludePath))——2>库目录(D:opencvuildx86vc11lib;$(LibraryPath))

    链接器——输入——附加依赖项 注意是debug版本的dll

    b.一次配置依赖

    视图——属性管理器——

    读入图像


    cv2.imread()读入图像

    第二个参数是要告诉函数应该如何读取这幅图片

    • cv2.IMREAD_COLOR:读入一副彩色图像。图像的透明度会被忽略, 这是默认参数。

    • cv2.IMREAD_GRAYSCALE:以灰度模式读入图像 

    cv2.waitKey() 是一个键盘绑定函数。需要指出的是它的时间尺度是毫 秒级。函数等待特定的几毫秒,看是否有键盘输入。特定的几毫秒之内,如果 按下任意键,这个函数会返回按键的 ASCII 码值,程序将会继续运行。如果没 有键盘输入,返回值为 -1,如果我们设置这个函数的参数为 0,那它将会无限 期的等待键盘输入。它也可以被用来检测特定键是否被按下,例如按键 a 是否 被按下,这个后面我们会接着讨论。

    cv2.destroyAllWindows() 可以轻易删除任何我们建立的窗口。如果 你想删除特定的窗口可以使用 cv2.destroyWindow(),在括号内输入你想删 除的窗口名。 

    tips:

    一 种 特 殊 的 情 况 是, 你 也 可 以 先 创 建 一 个 窗 口, 之 后 再 加 载 图 像。 这 种 情 况 下, 你 可 以 决 定 窗 口 是 否 可 以 调 整 大小。使用到的函数是 cv2.namedWindow()。初始设定函数 标签是 cv2.WINDOW_AUTOSIZE。但是如果你把标签改成 cv2.WINDOW_NORMAL,你就可以调整窗口大小了。当图像维度太大, 或者要添加轨迹条时,调整窗口大小将会很有用 

    在python里导入OpenCV包

    import numpy as np

    import cv2

    读取并显示图像(bmp,jpg,png,tiff)

    img=cv2.imread()

    创建一个窗口

    cv2.namedWindow("Image",cv2.WINDOW_NORMAL )

    在窗口中显示图像

    cv2.imshow("Image",img)

    在窗口显示时

     cv2.waitKey(0)

    关闭所有窗口

    cv2.destroyAllWindows()

    复制图片,保存图片格式等相关问题

    import cv2
    import numpy as np

    img=cv2.imread("/Users/guiyanan/Desktop/xjtlu.jpg")

    #get new image
    emptyImage = np.zeros(img.shape, np.uint8)

    #copy get a new image
    emptyImage2 = img.copy()

    #change the color of image
    emptyImage3=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    #emptyImage3[...]=0 transmit black blank image

    cv2.imshow("EmptyImage", emptyImage)
    cv2.imshow("Image", img)
    cv2.imshow("EmptyImage2", emptyImage2)
    cv2.imshow("EmptyImage3", emptyImage3)

    # for jpeg third is quality of image for png zip degree
    cv2.imwrite("/Users/guiyanan/Desktop/xjtlu1.jpg", img,[int(cv2.IMWRITE_JPEG_QUALITY),5])

    cv2.imwrite("/Users/guiyanan/Desktop/xjtlu2.jpg", img, [int(cv2.IMWRITE_JPEG_QUALITY), 100])


    cv2.imwrite("/Users/guiyanan/Desktop/xjtlu3.png", img, [int(cv2.IMWRITE_PNG_COMPRESSION), 0])

    cv2.imwrite("/Users/guiyanan/Desktop/xjtlu4.png", img, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])

    cv2.waitKey (0)
    cv2.destroyAllWindows()

  • 相关阅读:
    ASP.NET Core 3.0 迁移避坑指南
    Go初学乍练
    IdentityServer4 常见问题
    ASP.NET Core 奇淫技巧之动态WebApi
    Visual Studio 2019 16.1 使用 .NET Core 3.0
    【Java】maven多项目资源共享
    【Web】Web开发中的异常处理方案
    【UML】Java代码与UML模型相互转换方法
    【Spark】为什么没有任务调度到新增的Worker之上???
    【网络】高性能网络编程--下一个10年,是时候考虑C10M并发问题了
  • 原文地址:https://www.cnblogs.com/gzoof/p/6699445.html
Copyright © 2020-2023  润新知