zoukankan      html  css  js  c++  java
  • OpenCV-Python 学习(一) OPENCV 中的GUI 特性之图片

    1,读入图像 

    import numpy as np
    import cv2
    img = cv2.imread('messi5.jpg',0)

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

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

      cv2.IMREAD_UNCHANGED:读入一幅图像,并且包括图像的 alpha 通道

    2,显示图像


    cv2.imshow('image',img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

    cv2.waitKey() 是一个键盘绑定函数。函数等待特定的几毫秒,看是否有键盘输入。有输入则继续,0代表无限等待

    cv2.destroyAllWindows() 可以轻易删除任何我们建立的窗口

    cv2.destroyWindow(),在括号内输入你想删除的窗口名  cv2.destroyWindow('img')

    另一种方法先创建窗口再加载图像

    cv2.namedWindow('image', cv2.WINDOW_NORMAL)
    cv2.imshow('image',img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

    初 始 设 定 函 数标 签 是 cv2.WINDOW_AUTOSIZE。 但 是 如 果 你 把 标 签 改 成cv2.WINDOW_NORMAL,你就可以调整窗口大小了

    3,保存图像

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

    4,实例(esc 退出27 ord('s')获得s的键值)

    import numpy as np
    import cv2


    img = cv2.imread('messi5.jpg',0)
    cv2.imshow('image',img)
    k = cv2.waitKey(0)
    if k == 27:
    # wait for ESC key to exit
    cv2.destroyAllWindows()
    elif k == ord('s'): # wait for 's' key to save and exit
    cv2.imwrite('messigray.png',img)
    cv2.destroyAllWindows()
    警告:如果你用的是 64 位系统,你需要将  k = cv2.waitKey(0) 这行改成
    k = cv2.waitKey(0)&0xFF

    5,使用matplotlib

    import numpy as np
    import cv2
    from matplotlib import pyplot as plt

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

    彩色图像使用 OpenCV 加载时是 BGR 模式。但是 Matplotib 是 RGB模式。所以彩色图像如果已经被 OpenCV 读取,那它将不会被 Matplotib 正确显示。

    import cv2

    import numpy as np

    import matplotlib.pyplot as plt

    img = cv2.imread('messi4.jpg')

    b,g,r = cv2.split(img)

    img2 = cv2.merge([r,g,b])

    plt.subplot(121);plt.imshow(img) # expects distorted color

    plt.subplot(122);plt.imshow(img2) # expect true color

    plt.show()

    cv2.imshow('bgr image',img) # expects true color

    cv2.imshow('rgb image',img2) # expects distorted color

    cv2.waitKey(0)

    cv2.destroyAllWindows()

    6,OpenCV 中的绘图函数

    cv2.line(), cv2.circle(), cv2.rectangle(),cv2.ellipse(),cv2.putText()

    上面所有的这些绘图函数需要设置下面这些参数:
    • img:你想要绘制图形的那幅图像。
    • color:形状的颜色。以 RGB 为例,需要传入一个元组,例如:
    (255,0,0)
    代表蓝色。对于灰度图只需要传入灰度值。
    • thickness:线条的粗细。如果给一个闭合图形设置为 -1,那么这个图形
    就会被填充。默认值是 1.
    • linetype:线条的类型, 8 连接,抗锯齿等。默认情况是 8 连接。 cv2.LINE_AA为抗锯齿,这样看起来会非常平滑。

    cv2.line(img,(0,0),(511,511),(255,0,0),5)

    cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)

    cv2.circle(img,(447,63), 63, (0,0,255), -1)

    cv2.ellipse(img,(256,256),(100,50),0,0,180,255,-1)

    pts=np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)
    pts=pts.reshape((-1,1,2))
    # 这里 reshape 的第一个参数为 -1, 表明这一维的长度是根据后面的维度的计算出来的。

    font=cv2.FONT_HERSHEY_SIMPLEX
    cv2.putText(img,'OpenCV',(10,500), font, 4,(255,255,255),2)

  • 相关阅读:
    Git远程库版本回滚
    微软Connect(); 2017大会梳理:Azure、数据、AI开发工具
    【实验手册】使用Visual Studio Code 开发.NET Core应用程序
    Ocelot API网关的实现剖析
    微软Tech Summit 2017,等你来打Call
    “.Net 社区大会”(dotnetConf) 2017 Day 1 Keynote: .NET Everywhere
    .NET平台微服务项目汇集
    .Net Core下通过Proxy 模式 使用 WCF
    .NET Core 2.0 正式发布信息汇总
    Visual Studio 2017 : client version 1.22 is too old
  • 原文地址:https://www.cnblogs.com/nku-wangfeng/p/8933372.html
Copyright © 2011-2022 走看看