Opencv入门必读知识

news2024/11/27 17:55:07

目录

前言

什么是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 中国科学技术大学提供了众多开源软件和操作系统的镜像下载。其镜像站点还包括了一些国外知名的开源项目和软件库。

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

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

  • 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颜色空间将颜色的属性分为三个维度:

  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也一样,如果你不想下载这个包就把它的文件全部删除。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/764161.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据库应用:MySQL备份与恢复

目录 一、理论 1.数据备份 2.完全备份与恢复 3.完全备份与恢复应用 4.增量备份与恢复 5.增量备份与恢复应用 6.使用脚本备份 7.日志管理 二、实验 1.完全备份与恢复 2.增量备份与恢复 3.使用脚本备份 三、问题 1.mysqldump报错 四、总结 一、理论 1.数据备份 …

2、算法好坏的衡量尺度

上一讲我们大概说明了数据在内存中的存储方式。这里我们说一下算法性能评价的角度。 我们说一个算法是否高效,一般会从两个角度来评价,即 时间复杂度 和 空间复杂度。 时间复杂度的计量单位是语句运行次数。常用的符号表示是O(x)。这里的x可以是不同的…

EXCEL里如何判断多个单元格/数据相等的小技巧

目录 1 问题:EXCEL里如何判断多个数据相等 2 错误方法 ABCD... 3 正确方法1 countif() 4 正确方法2: {and(exact())} 1 问题:EXCEL里如何判断多个数据相等 有时候,我们可能需要判断10个数据相等这时候写嵌套,或者…

常用API学习04(Java)

System System类包含几个有用的类字段和方法。它不能被实例化。System类提供的System包括标准输入,标准输出和错误输出流;访问外部定义的属性和环境变量;一种加载文件和库的方法;以及用于快速复制阵列的一部分的实用方法. public static void exit(int status) …

WEB:easytornado

背景知识 Tornado 题目 一个一个点击尝试吧 /flllllllllag这个文件,估计是flag 发现了render,render是渲染HTML页面用到的函数。 发现加密方式是MD5值是文件名的MD5加上cookie_secret这个值,之后再MD5加密 获取cookie_secret的值 http://…

【输入法篇】PC微软输入法自定义短语的高级操作

【输入法篇】PC微软输入法自定义短语的高级操作 PC微软输入法自带的剪贴板,可设置常用高频词组、信息等。关键词唤起,告别重复粘贴,类似手机输入法剪贴板功能。—【蘇小沐】 文章目录 【输入法篇】PC微软输入法自定义短语的高级操作1.实验环…

kibana中添加spaces空间

目的 当需要对kibana中索引数据进行分组分区管理,如不同团队,不同业务等。可以同过kibana中的spaces空间进行分组展示。 操作 management>Spaces>create a space 填写name(自定义图标)>Customize feature display自定义…

Adaptive Graph Convolutional Subspace Clustering

基于图卷积算子的表示: 根据增广拉格朗日方法得出: 整个算法的步骤如下: 实验结果:

互联网时代个人信息安全:便利和担忧并存

文章目录 每日一句正能量前言一、互联网生存指南:通过哪些方法来加强个人信息保护?二、个人信息保护与数字经济发展的关系应该如何平衡?三、互联网公司如何处理数据隐私?四、如何加强个人隐私教育和意识?后记 每日一句…

取代抖音的下一个模式是什么?

现在抖音平台的发展还是很不错的,它通过短视频为基础不断发展其他方面的业务,比如电商,金融等,而抖音未来的发展将会越来越缓慢,这时候就可能出现下一个取代抖音的模式,是什么呢? 目前还无法预测…

dp算法篇Day8

"留下一首痛斥我的歌" 36、最长回文子串 (1) 题目解析 针对这一类回文串的动规问题得出该题解的状态表达式,不是经验题目要求,以什么位置为结尾…… 因为,这样定义的状态表达式是得不出求不出转移方程的。 (2) 算法原理 class Sol…

初识mysql数据库之索引概念与磁盘效率问题

目录 一、索引的概念及作用 二、实际看看索引的效率提升 三、认识磁盘 1. 简单了解磁盘 2. 数据库文件存储位置 3. 定位扇区 4. 数据读取效率问题 5. 磁盘随机访问与磁盘连续访问 5.1 随机访问 5.2 连续访问 四、mysql与磁盘的交互 五、建立共识 一、索引的概念及…

讯为RK3568开发板到手编译buildroot系统入坑一

从事单片机开发多年一直想买一个开发板学习Linux系统,这次狠心花了800多打样买了一个讯为的RK3568低配。裸板配置。 因为讯为没有编译系统的视频教程,只有文档的教程,而且只有瑞芯微官方带的Linux源码中的系统编译后文档教程。像ubuntu是没有…

网络编程Java Socket(UDP/TCP 套接字)

Socket是什么? 想知道Socket是什么就先得了解一下什么是网络编程 网络编程,通过代码来控制两个主机的进程之间能够进行数据交互。 操作系统就把网络编程的一些相关操作,封装起来了,提供了一组API供程序员使用。操作系统提供的功能…

Windows NT 驱动程序的编译、安装、调试

Windows NT 驱动程序的编译、安装、调试 Windows NT 驱动介绍NT 驱动代码分析编译安装修改注册表进行安装使用工具 DriverMonitor 进行打开加载安装 调试 Windows NT 驱动介绍 Windows 驱动分为两类,一类是从 Windows NT 遗留下来的驱动模型称为传统的 Windows NT …

1、Winform项目创建

项目创建的过程时比较简单的,要点在于选择基本库。 这里我们选择.Netframework 4.7.2,为什么使用这个呢?因为这个大多数windows系统上都装的有。如果使用.Net Core什么的,可能还需要再下载对应的运行库,影响用户体验。 具体步骤如下: 选择创建新项目 选择创建桌面应用…

RabbitMQ如何保证消息的可靠性6000字详解

RabbitMQ通过生产者、消费者以及MQ Broker达到了解耦的特点,实现了异步通讯等一些优点,但是在消息的传递中引入了MQ Broker必然会带来一些其他问题,比如如何保证消息在传输过程中可靠性(即不让数据丢失,发送一次消息就…

GDB调试基础知识

文章目录 概念准备工作常用命令说明启动与退出给程序设置参数/获取设置参数GDB使用帮助查看当前文件代码查看非当前文件代码查看及设置显示的行数断点操作调试操作 概念 GDB 是由 GNU 软件系统社区提供的调试工具,同 GCC 配套组成了一套完整的开发环境,…

Python基础教程——60个基础练习(三)

41-字符串格式化 "%s is %s years old" % (bob, 23) # 常用 "%s is %d years old" % (bob, 23) # 常用 "%s is %d years old" % (bob, 23.5) # %d 是整数 常用 "%s is %f years old" % (bob, 23.5) "%s is %5.2f…