opencv入门_一、OpenCV入门

一、图像的读取、显示和保存

1. 读取图像

retval = cv2.imread(文件名, 显示控制参数)

使用示例:

import cv2

img = cv2.imread("C:\\Users\\92039\\Desktop\\xiangmu\\test.png")# 两个反斜杠,第一个反斜杠用于转义字符

2. 显示图像

None = cv2.imshow(窗口名, 图像名)

示例:

import cv2

img = cv2.imread('girl.jpg')
cv2.imshow("demo", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

9745ff22a2b5e16ed108b1e5309cec28.png

image-20200615093502824

retval = cv2.waitKey(    |, delay|)

  • delay:

    delay > 0, 等待 delay 毫秒

    delay < 0,等待键盘单击

    delay=0,无限等待

cv2.destroyAllWindows() # 删除所有窗口

3. 保存图像

retval = cv2.imwrite(文件地址, 文件名)

示例:

import cv2

img = cv2.imread('girl.jpg')
cv2.imshow("demo", img)
cv2.imwrite('girl_1.jpg', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

在源目录下生成一个 girl_1.jpg 图像

b414da1f7b3b8be82b9fe8bebadee103.png

image-20200615094550066

二、图像概念基础入门

图像是由一个个像素点构成的。一般而言,相机的像素越高,像素点就更加细腻,看起来就更加的清晰

ebd0e0fd92610b8fcfa4b690897156b0.png

image-20200615095226487

图像分类

a505d8b582e698fb155ecfddaaa2ba38.png

image-20200615095421142

二值图像的像素点只有两个值(0或1)

灰度图像有两个通道,像素值范围 0~255

RGB 图像有三个通道,由红绿蓝三原色构成。我们在小学时候,老师应该就教过这些概念,用不同程度的三原色颜料可以汇出任意一种已知的颜色。

eefd63ae73ea25a73961990a40a1360d.png

image-20200615095933537

在 opencv 中图像读取之后,通道是按照 RGB 排列的,和 matlab 中有点区别,在 opencv 中可以进行通道转换,在后面章节中会进行介绍。

在 opencv 中可以进行 RGB 转灰度,灰度图像转化为二值图像

55928e5a0496e3c9827ad6ea9de5ac59.png

image-20200615101400253

35d441d88296623b7b37a7c054d0416a.png

image-20200615100519429

三、读取像素

1. 读取图像

返回值 = 图像(位置参数)

  • 灰度图像,返回灰度值

    读取灰度值范例:

    p = img[88, 142]

    print(p)

  • RGB 图像,返回值为 B,G,R 的值。

    对于三通道图,读取像素点示例:

    blue = img[78, 125, 0]

    print(blue)

    green = img[78, 125, 1]

    print(green)

    red = img[78, 125, 2]

    print(red)

    其中 0 ,1 ,2 表示对应通道

    如果不指定通道数:

    p = img[78, 125]

    print(p)

    输出结果有三个值,分别对应 B、G、R 三通道

2. 修改像素值

  • 灰度图像

    示例:

    print(img[78, 125])

    img[78, 125] = 255

    print(img[78, 125])

  • BGR 图像

    示例:

    print(img[78, 125])

    img[78, 125] = [255, 255, 255]

    print(img[78, 125])

    结果如下:

    image-20200615113953275
  • b7f237406e81a5d256a0b49239700912.png

四、使用 numpy 进行图像处理

  1. 读取像素

返回值 = 图像.item(位置参数)

  • 灰度图像,返回灰度值。

    示例:

    p = img.item(88, 142)

    print(p)

  • BGR 图像,返回值为B,G,R 的值。

    示例:

    blue = img.item(78, 125, 0) green = img.item(78, 125, 1) red = img.item(78, 125, 2) print(blue) print(green) print(red)

    import cv2

    img = cv2.imread('girl.jpg')
    p = img.item(88, 142, 1)
    print(p)

    cv2.waitKey(0)
    cv2.destroyAllWindows()

    >>>41
  1. 修改像素值

  • 灰度图像

    示例:

    img.itemset((88, 99), 255)

    import cv2

    img = cv2.imread('girl.jpg', 0)

    print(img.item((88, 99)))
    img.itemset((88, 99), 255)
    print(img.item((88, 99)))
    #cv2.imshow("img", img)

    cv2.waitKey(0)
    cv2.destroyAllWindows()
    >>> 149
    >>> 255
  • BGR 图像

    示例:

    img.itemset((88, 99, 0), 255)

    img.itemset((88, 99, 1), 255)

    img.itemset((88, 99, 2), 255)

    import cv2
    import numpy as np

    img = cv2.imread('girl.jpg', 1)

    print(img.item((88, 99, 0)))
    print(img.item((88, 99, 1)))
    print(img.item((88, 99, 2)))

    img.itemset((88, 99, 0), 255)
    img.itemset((88, 99, 1), 255)
    img.itemset((88, 99, 2), 255)
    print(img.item((88, 99, 0)))
    print(img.item((88, 99, 1)))
    print(img.item((88, 99, 2)))
    #cv2.imshow("img", img)

    cv2.waitKey(0)
    cv2.destroyAllWindows()
    image-20200615142909114

    5da750d58c389d12625ca994032f6d58.png

b919bf7b530865e90c1d2c500e41c27e.png

OpenCV是一个广受欢迎的开源计算机视觉库 是一个广受欢迎的开源计算机视觉库 ,它提供了 很多函数,实现很多计算机视觉法,从最基本的 滤波到高级物体检测 皆有涵盖 。很多 初学者希望快速掌握 OpenCV OpenCV OpenCVOpenCV的使用方法 ,但 往会 遇到 各种样的困难。 其 实仔细分析,造成这些困难的原因 有两类:第一是 C/C++/C++/C++/C++编程基础不过关; 第二类是不了解算法原理。 解决 这些 困难无非提升编程能力,以及理论基 础知识。 提升编程能力需要多练习,理论知识系统学《数字图 像处理》、《计算机视觉和模式识别等课程,所有这些都不 像处理》、《计算机视觉和模式识别等课程,所有这些都不 像处理》、《计算机视觉和模式识别等课程,所有这些都不 能一蹴而就 , 需要耐下心来认真修炼。 同时我们也 需要 认识到 OpenCV OpenCV OpenCVOpenCV只是一个算法库, 只是一个算法库, 能为我们搭建计算机视觉 应用提供“砖头”。我们并不需要完全精通了算法原理 应用提供“砖头”。我们并不需要完全精通了算法原理 之后 才去使用 OpenCV OpenCV OpenCVOpenCV, 只要了解“砖头”的功能,就可以动手。在实践中学习 才是最高效的学习 方式。 本小册子希望为初学者提供引导,使快速了解 OpenCV OpenCV OpenCVOpenCV的基本数 据结构以及用法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值