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

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 imgdef 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.hqwc.cn/news/26624.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【CSDN新星计划】初阶牛C/C++赛道——顺序程序设计(C语句)

目录 3.1 C语句的作用和分类 🍉(1)控制语句 🍉(2)函数调用语句 🍉(3)表达式语句 🍉(4)空语句 🍉(5&#…

NAT—网络地址转换

目录 静态NAT 动态NAT NAPT—easy IP 多对多的NAPT 端口映射—高级用法 NAT—网络地址转换 IPV4地址不够用 NAT ABC—三类地址中截取了一部分地址(并且让这部分地址可以重复使用)—私网地址 A类地址中:10.0.0.0-10.255.255.255 (…

官宣!Databend Cloud 和青云科技达成合作

近日,北京数变科技有限公司与北京青云科技股份有限公司(以下简称:青云科技 )顺利完成了产品兼容性适配互认证。本次测试是对 Databend 云原生数据仓库系统与青云科技公司自主研发的 QingStor U10000 进行严格的联合测试验证。测试结果显示&am…

imazing怎么导出app,Imazing修改APP存档的方法【2023详解】

相信很多小伙伴都不清楚Imazing导出APP及能够帮助我们更好地去管理手机,还能够替换从网上下载的游戏存档,让用户可以有一个更好地体验,那么具体要如何去操作呢?下面就跟着小编一起来看看Imazing修改APP存档的方法吧。 使用软件 iM…

HCIA配置命令集

目录 扩展 交换机 路由器 路由器网关配置 DHCP服务器 Telnet :远程登录协议 静态路由配置 动态路由 OSPF RIP NAT—网络地址转换 ACL—访问控制列表 ACL的分类: 配置 配置基础ACL : 例一: 例二: 配…

TypeScript - 函数(下)

目录 1、在函数中声明this 2、其他需要知道的类型 2.1 void 2.2 object 2.3 unknow 2.4 never 2.5 Function 3、其余参数(rest)和参数 4、参数解构 5、函数的可分配性 1、在函数中声明this TypeScript 将通过代码流分析推断函数中应该是什么&…

良心推荐!5款支持Linux系统的国产软件,兼容国产操作系统

虽然市面上大多数用户使用的是Windows操作系统,但也有不少使用Linux系统的用户,特别是国产操作系统的崛起,让Linux系统阵营的用户越来越多。Linux不像Windows那样,有着完整的生态环境丰富的软件应用,但也逐渐在完善中&…

【HCIA】12.网络服务与应用

文件传输协议FTP FTP基于TCP,传输较慢,但是比较可靠。典型的C/S架构。双通道协议。TFTP基于UDP,传输较快,但是不可靠。FTP有两种不同的传输模式 ASCII模式 传输文本文件时会对文本内容进行编码方式转换,提高传输效率&…

百科创建必看攻略!人物百度百科怎么创建?5分钟教会你创建人物百度百科词条

百度人物百科是一个广受欢迎的在线百科平台,它为用户提供了一个便捷的方式来了解各种各样的人物信息。如果你有一个人物的详细资料,你可以通过创建一个百度人物百科页面来分享这些信息。 下面是分媒互动分享的创建百度人物百科页面的步骤以及需要注意的几…

JavaWeb——基于Spring Boot的图书数字化管理系统的设计与实现

课程设计总结 1 概述 1.1 项目开发背景 随着信息技术的快速发展,数字化管理已经成为各行各业提高效率和管理水平的重要手段。在图书管理领域,数字化管理系统可以有效地提高管理效率,提供更好的用户体验。本项目旨在开发一个基于Spring…

Zotero翻译插件“zotero pdf translate”——使用时出现广告的问题的解决办法

一、背景: 在Zotero上安装了“zotero-pdf-translate”插件来辅助翻译。今天忽然发现,在使用CNKI翻译引擎的时候,末尾被加上了广告: (查看名企职位领高薪offer!--->智联招聘https***dict.cnki.net/ad.html) 如下&…

后端Long类型传到前端精度丢失的问题

问题出现:后端的Java Bean的id属性是用的Long类型对应数据库主键使用bigint类型,当使用JSON方式传递该数据给前端时,前端接收到的数据末尾会变成0。(发生的精度丢失问题) 问题原因:Java中的long能表示的范围…