Opencv入门必读知识

目录

前言

什么是Opencv?

0、预备知识

导入模块的方式

颜色空间

绝对路径与相对路径

国内镜像源

Python环境的安装

PIP命令下载第三方库

pip命令下载

Pycharm设置解释器下载

conda命令下载

pip不是外部和内部命令

1、调用Opencv的API

(1)加载并显示图片

(2)怎么查看Opencv的API

(3)图像坐标

(3)查询官方文档

(4)HSV与蒙版

(5)级联分类器

(6)视频类

2、pyzjr的安装与使用


前言

鉴于同学们反映讲的有点快,这里我们做一个补充。

什么是Opencv?

OpenCV(Open Source Computer Vision)是一个开源的计算机视觉库,旨在提供计算机视觉和机器学习算法的实现。它是一个跨平台的库,可在多个操作系统上运行,包括Windows、Linux、macOS和Android。

0、预备知识

导入模块的方式

这里拿pyzjr举例,pyzjr为本人开发的第三方库,集成的模块用于个人的工程当中。

from pyzjr import *
import pyzjr
import pyzjr as pz
from pyzjr import labelpoint,addnoisy

以上这几种都是正确的,第一行的意思是说将pyzjr里面的函数全部引用,第二行是导入pyzjr,第三行是导入pyzjr并再命名为pz,最后一行是引用pyzjr当中的函数。

对于第一种,建议小白不要使用,很容易分不清,第二种调用函数的方式是pyzjr.labelpoint,第二种调用函数方式是pz.labelpoint,第三种调用函数方式是直接使用。

颜色空间

在opencv当中读取图片的格式为BGR的格式,scikit-image、matplotlib、PIL/Pillow都是具有RGB显示的,当然这里并不是说它们只能读取这种颜色空间,再比如imageio库本身并不定义图像的颜色空间。它可以读取各种图像格式的数据,并将其转换为NumPy数组。图像的颜色空间取决于读取的图像本身。

绝对路径与相对路径

拿一张图片举例,Opencv_beginner为工程文件夹:

绝对路径:E:\pycharmlujin\Opencv_beginner\source\cards.jpg

相对路径:source\cards.jpg

Opencv入门必读知识_第1张图片

source文件夹与我们的运行文件处在同一目录(Opencv_beginner)下,所以这里是的路径才是source\cards.jpg。

路径一定要完整,在文件夹中要将扩展名打开,不然很容易就不知道像.png这样的后缀。

Opencv入门必读知识_第2张图片

国内镜像源

国内镜像源是指位于中国境内的软件、开源项目以及操作系统的镜像站点。这些镜像站点的作用是提供更快速、稳定的下载服务,使用户能够更方便地获取所需的软件和开源项目。

以下是一些常见的国内镜像源:

  1. 清华大学开源镜像站:清华大学开源软件镜像站 | Tsinghua Open Source Mirror 提供了众多开源项目的镜像,如Python、Docker、Ruby等。同时还提供了多个操作系统的镜像下载,如Ubuntu、CentOS等。

  2. 阿里云开源镜像站:阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 阿里云提供了丰富的开源软件镜像服务,包括常见的软件库、开发工具等。还提供了多个常用Linux发行版的镜像下载。

  3. 华为开源镜像站:华为开源镜像站_软件开发服务_华为云 华为云提供了大量的开源软件和操作系统的镜像下载服务,如Java、Node.js、CentOS等。

  4. 中科大开源软件镜像站:USTC Open Source Software Mirror 中国科学技术大学提供了众多开源软件和操作系统的镜像下载。其镜像站点还包括了一些国外知名的开源项目和软件库。

使用国内镜像源可以加快下载速度,提高软件获取的稳定性。在下载软件或开源项目时,可以选择合适的镜像源进行下载,以提高效率。

这里我们常用的就是清华源,这里提供了一些命令:

  • matplotlib: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple matplotlib==2.2.4
  • scikit-image: pip install scikit-image -i https://pypi.tuna.tsinghua.edu.cn/simple
  • opencv-python: pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple
  • opencv-contrib-python: pip install opencv-contrib-python -i https://pypi.tuna.tsinghua.edu.cn/simple

加粗的部分才是命令,不要将前面的也复制进去了。

Python环境的安装

请严格按照此篇搭建,写的很详细,建议先浏览一遍,再去按照教程操作。

(9条消息) 纯净Python环境的安装以及配置PyCharm编辑器_python纯净版_夏天是冰红茶的博客-CSDN博客

文中还有一些对文件管理的一些提醒,我在这里简略的说下。

安装的位置尽量选择C盘除外,新建工程的时候也将其换到C盘之外。

下载软件最好不要下载最新版,都知道游戏都会有测试服,为什么?就是为了来查找是否有没有发现的bug。

Pycharm和Python的安装绝对不能使用软件管家,它这里是打包好的,然而有些东西是需要勾选的。当然其他的软件咱们这里不提。

PIP命令下载第三方库

pip命令下载

下载的方法主要是通过pip下载,比如在这里拿numpy来举例

安装numpy:pip install numpy

安装numpy指定版本:pip install numpy==1.24.3       (具体的版本号)

在安装时要联网下载,安装失败最大的可能是网速,可以换手机热点试试。在安装过程中把“梯子”关了。

下面三种请自寻查找

pip show numpy

pip list

pip uninstall numpy

Pycharm设置解释器下载

另一种是打开Pycharm中的设置

Opencv入门必读知识_第3张图片

在你们可以搜索下载 ,这里也需要联网。搜索到了点击安装就好了。

conda命令下载

这种方式是下载了Anaonda提供的另外一种命令,这里不细讲。

pip不是外部和内部命令

(10条消息) ‘pip‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件 -- 解决方法_pip不是内部或外部命令也不是可运行_黎陌MLing的博客-CSDN博客

(10条消息) 【‘pip‘ 不是内部或外部命令,也不是可运行的程序或批处理文件】_pip' 不是内部或外部命令,也不是可运行的程序_Viwise的博客-CSDN博客

这种可以自行查找解决,CSDN就用很多的文章,出现这种情况大概是没有添加到环境变量中。

1、调用Opencv的API

(1)加载并显示图片

import cv2
path="  "
img = cv2.imread(path)
# TODO:对图像的操作
cv2.imshow("WindowsName",img)
cv2.waitKey(0)

对图片的一系列操作都是可以通过在加载和显示之间进行的。

(2)怎么查看Opencv的API

Opencv入门必读知识_第4张图片

将光标轻轻的放在上面就会出现提示,一般可以通过Ctrl+鼠标左键跳转进入函数中,查看英文释义。如果有些函数给了None,表示这个值其实是可选的,我们一般使用函数会传给它实参,修改形参。

(3)图像坐标

在计算机图像中,坐标通常使用二维直角坐标系进行表示。这种坐标系由两个轴组成:水平的X轴和垂直的Y轴。原点(0, 0)通常位于左上角,X轴向右延伸,Y轴向下延伸。

对于一个具体的像素点,它的坐标表示了在图像中的位置。例如,坐标(100, 200)表示距离图像的左上角100个像素的水平偏移,以及距离图像的左上角200个像素的垂直偏移。坐标的单位通常是像素。

Opencv入门必读知识_第5张图片

(3)查询官方文档

OpenCV中文官方文档

还有英文文档,但不是很好查找,执意要用的自己搜索,或者在教案的附录里找到。

(4)HSV与蒙版

HSV(色相、饱和度、亮度)是一种常用的颜色空间,与RGB(红绿蓝)颜色空间相比,HSV颜色空间更适合处理颜色信息。HSV颜色空间将颜色的属性分为三个维度:

  1. 色相(H):表示颜色的种类或类型,用角度值表示,取值范围为0到360度。例如,红色、绿色、蓝色等颜色在HSV颜色空间中具有不同的色相值。

  2. 饱和度(S):表示颜色的纯度或鲜艳程度,取值范围为0到1之间,0表示灰度色,1表示最鲜艳的颜色。

  3. 亮度(V):表示颜色的明暗程度,取值范围为0到1之间,0表示最暗的颜色,1表示最亮的颜色。

HSV颜色空间的优点在于,它更符合人类对颜色的感知和描述方式,使得颜色的分析和处理更加直观和方便。

蒙版(Mask)是一种二值图像,其中像素值为0或1,用于选择或过滤图像的某些部分。在图像处理中,蒙版通常用于指定感兴趣的区域或特定的像素范围。

在结合OpenCV使用时,可以利用HSV颜色空间和蒙版来执行各种图像处理任务,例如颜色分割、目标检测、图像增强等。

这在我的代码中也有,如果不能理解,就当作脚本使用即可。

(5)级联分类器

CascadeClassifier 是 OpenCV 中的一个类,用于对象检测和识别。它基于级联分类器(Cascade Classifier)的概念,通过训练的模型来识别特定的对象或特征。

级联分类器是一种基于机器学习的对象检测方法,其中级联表示级别化的分类过程。CascadeClassifier 使用的最常见的级联分类器是基于 Haar 特征和 Adaboost 算法的人脸检测器。

要使用 CascadeClassifier,首先需要加载训练好的级联分类器模型文件。OpenCV 提供了一些预训练的级联分类器模型,例如人脸检测、眼部检测、车辆检测等。

这里我们不做要求,只有把代码跑通了就可以了。

(6)视频类

import cv2
cap = cv2.VideoCapture(0)
cap.set(3,宽度值)
cap.set(4,高度值)
cap.set(10,亮度值)
while True:
    success, img = cap.read()
    cv2.imshow("Video_Image",img)
    k = cv2.waitKey(1)
    elif k==ord("s"):
        cv2.imwrite("result.png",img)
    if k == ord("q"):
        break

在cv2.VideoCapture(mode)中,我们如果给mode传的是0,表示的就是调用本地的网络摄像头,如果传的是1,那么就调用的是外部的摄像头,这个摄像头需要和你的电脑接口相连。

基于此,我们可以将其变得更加的简单点,就是使用类与对象的方法。

# 已经放置在pyzjr当中,方便调用
class VideoCap:
    """
    自定义的视频读取类
    """
    def CapInit(self,mode=0,w=640,h=480,l=150):
        self.cap = cv2.VideoCapture(mode)
        self.cap.set(3, w)
        self.cap.set(4, h)
        self.cap.set(10, l)
    def read(self):
        _, img = self.cap.read()
        return img
    def free(self):
        self.cap.release()

要想实现视频的初始化,我们就使用两行代码就足够了。

from pyzjr import *

Vcap = VideoCap()
Vcap.CapInit()

注意,使用类时,要给一个实例化对象,比如这里的Vcap。

2、pyzjr的安装与使用

在0.0.16版本以后,添加了torch框架,没有深度学习环境的就不要下载了,或者暂时只做图像的话,将其报错的部分,以及函数删除即可。

Opencv入门必读知识_第6张图片

跳转到这两个函数中,FM需要将下面的内容删除,请注意,如果你选择下载了tqdm和requests,那么就不用删除。 

Opencv入门必读知识_第7张图片

进入Minio也一样,如果你不想下载这个包就把它的文件全部删除。

目前,我已经添加了依赖包的下载,现在还在测试当中,未来说不定安装也就能把其中的依赖包安装好。

你可能感兴趣的:(Opencv快速入门,opencv,人工智能,计算机视觉)