OpenCV:入门(一)

一,安装

python版本最好大于等于3.8

进入虚拟环境,键入

pip install opencv-python

继续键入

pip install opencv-contrib-python

当然,你也可以使用conda来进行安装

conda install opencv-python

conda install opencv-contrib-python 

 

至此,opencv的安装过程结束 。

二,图像的基本处理

在图像处理过程中,读取图像、显示图像、保存图像是最基本的操作。本篇文章将简要介绍基本功能与使用。

1.图像的读取,显示,保存

(1)读取

cv2.imread()方法

import cv2

img = cv2.imread(src,type)

src:图片路径

type:图像读取格式 

 

在入门篇中,type除灰度转换以外一般不涉及。

好了,语法我们已经了解了,接下来我们来看看实际使用:

import cv2
import numpy as np
import matplotlib.pyplot as plt
if __name__ == '__main__':
        img = cv2.imread('street.jpg',cv2.IMREAD_GRAYSCALE)
        cv2.imshow('street',img)
        cv2.waitKey(0)

 

 

上述代码中就是基本的图像读取与展示,cv2.imshow()是展示图片的方法,必须填入两个参数:图片标题和图片。

cv2.waitKey(0)的用处可以简单理解为一个死循环来维持图片存在,直到键入任意键才会退出循环,如果不加这条语句,图片只会暂存一会。

(2)显示

cv2.imshow()

函数 cv2.imshow()用来显示图像,其语法格式为: None = cv2.imshow( title, img ) 式中: title 是窗口名称。 img 是要显示的图像。  

(3)保存

cv2.imwrite()

retval = cv2.imwrite( filename, img[, params] )

 retval 是返回值。如果保存成功,则返回逻辑值真(True);如果保存不成功,则返回逻 辑值假(False)。

 filename 是要保存的目标文件的完整路径名,包含文件扩展名。 

2.图像本质

import cv2
import numpy as np
import matplotlib.pyplot as plt
if __name__ == '__main__':
        img = cv2.imread('street.jpg',cv2.IMREAD_GRAYSCALE)
        cv2.imshow('street',img)
        print(img)
        cv2.waitKey(0)

 

图像本身由许多像素点组成,而这些像素点又可以理解为介于0-255之间的值,所以一幅500x500的图像可以认为是由500x500的二维数组,当然这仅限与黑白照片,一幅彩色照片由三个颜色通道(r,g,b)组成,相当于三副500x500的图像叠在一起。

当了解图像本质是多维数组后,图片的裁剪,旋转,过滤等后续操作本质就是对数组进行一个数学过程。

(1)截取图片

上面我们已经谈到图片本质是多维数组(mxnx3),既然这样截取图片本质也就是对数组进行切片。

import cv2
import numpy as np
import matplotlib.pyplot as plt
if __name__ == '__main__':
     #截取图片
        img = cv2.imread('street.jpg')
        clipped_img = img[0:200,0:200]
        cv2.imshow('street_clipped',clipped_img)
        cv2.waitKey(0)

 

如此,我们截取到了左上角200x200的一块区域。

(2)提取颜色通道

import cv2
import numpy as np
import matplotlib.pyplot as plt
if __name__ == '__main__':
    img = cv2.imread('street.jpg')
        b,g,r = cv2.split(img)
        print("b:")
        print(b)
        print("g:")
        print(g)
        print("r:")
        print(r)

 

与上文相符,b,g,r三个颜色通道简单来讲就是三个二维数组。 

 

3.杂项

(1)waitKey函数

函数 cv2.waitKey()用来等待按键,当用户按下键盘后,该语句会被执行,并获取返回值。 其语法格式为: retval = cv2.waitKey( [delay] ) 式中: retval 表示返回值。如果没有按键被按下,则返回−1;如果有按键被按下,则返回该按 键的 ASCII 码。 delay 表示等待键盘触发的时间,单位是 ms。当该值是负数或者零时,表示无限等待。 该值默认为 0。 在实际使用中,可以通过函数 cv2.waitKey()获取按下的按键,并针对不同的键做出不同的 反应,从而实现交互功能。例如,如果按下 A 键,则关闭窗口;如果按下 B 键,则生成一个 窗口副本。

目前基本使用waitKey(0),方便我们的测试。

(2)destroyWindow函数

函数 cv2.destroyWindow()用来释放(销毁)指定窗口,其语法格式为: None = cv2.destroyWindow( winname ) 其中,winname 是窗口的名称。 在实际使用中,该函数通常与函数 cv2.waitKey()组合实现窗口的释放。 

 

  (3)destroyAllWindows函数

函数 cv2.destroyAllWindows()用来释放(销毁)所有窗口,其语法格式为: None = cv2.destroyAllWindows( ) 

 

 

 

相关推荐

  1. openCV入门

    2024-05-25 20:26:26       36 阅读
  2. OpenCV 入门教程

    2024-05-25 20:26:26       25 阅读
  3. OpencV入门讲解

    2024-05-25 20:26:26       32 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-25 20:26:26       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-25 20:26:26       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-25 20:26:26       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-25 20:26:26       20 阅读

热门阅读

  1. em,rem,vw,vh,px,rpx,%的用法

    2024-05-25 20:26:26       13 阅读
  2. Spring Boot: 为 JPA 插上翅膀的 QueryDSL

    2024-05-25 20:26:26       10 阅读
  3. leetcode143-Reorder List

    2024-05-25 20:26:26       9 阅读
  4. 实现C++ List,双端链表和静态链表

    2024-05-25 20:26:26       10 阅读
  5. Python和Plotly绘制3D图形的小说明

    2024-05-25 20:26:26       8 阅读
  6. kindeditor 上传中 网络图片 去掉 图片空间

    2024-05-25 20:26:26       9 阅读
  7. 中医理疗元宇宙 中医理疗元宇宙

    2024-05-25 20:26:26       8 阅读