目录
前言
什么是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这样的后缀。
国内镜像源
国内镜像源是指位于中国境内的软件、开源项目以及操作系统的镜像站点。这些镜像站点的作用是提供更快速、稳定的下载服务,使用户能够更方便地获取所需的软件和开源项目。
以下是一些常见的国内镜像源:
-
清华大学开源镜像站:清华大学开源软件镜像站 | Tsinghua Open Source Mirror 提供了众多开源项目的镜像,如Python、Docker、Ruby等。同时还提供了多个操作系统的镜像下载,如Ubuntu、CentOS等。
-
阿里云开源镜像站:阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 阿里云提供了丰富的开源软件镜像服务,包括常见的软件库、开发工具等。还提供了多个常用Linux发行版的镜像下载。
-
华为开源镜像站:华为开源镜像站_软件开发服务_华为云 华为云提供了大量的开源软件和操作系统的镜像下载服务,如Java、Node.js、CentOS等。
-
中科大开源软件镜像站: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中的设置
在你们可以搜索下载 ,这里也需要联网。搜索到了点击安装就好了。
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颜色空间将颜色的属性分为三个维度:
-
色相(H):表示颜色的种类或类型,用角度值表示,取值范围为0到360度。例如,红色、绿色、蓝色等颜色在HSV颜色空间中具有不同的色相值。
-
饱和度(S):表示颜色的纯度或鲜艳程度,取值范围为0到1之间,0表示灰度色,1表示最鲜艳的颜色。
-
亮度(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也一样,如果你不想下载这个包就把它的文件全部删除。
目前,我已经添加了依赖包的下载,现在还在测试当中,未来说不定安装也就能把其中的依赖包安装好。