目录

前言

什么是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

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

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

国内镜像源

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

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

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

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

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

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

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

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

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

Python环境的安装

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

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

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

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

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

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

PIP命令下载第三方库

pip命令下载

点击Win+R,输入cmd,下载的方法主要是通过pip下载,比如在这里拿numpy来举例

安装numpy:pip install numpy

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

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

下面三种请自寻查找

pip show numpy

pip list

pip uninstall numpy

Pycharm设置解释器下载

另一种是打开Pycharm中的设置

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

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

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

(3)图像坐标

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

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

(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框架,没有深度学习环境的就不要下载了,或者暂时只做图像的话,将其报错的部分,以及函数删除即可。

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

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

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

log:

pip install pyzjr==1.1.0 --user -i https://pypi.tuna.tsinghua.edu.cn/simple
 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐