Opencv入门必读知识-程序员宅基地

技术标签: # 优质教程  计算机视觉  人工智能  Opencv快速入门  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 中国科学技术大学提供了众多开源软件和操作系统的镜像下载。其镜像站点还包括了一些国外知名的开源项目和软件库。

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

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

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

Python环境的安装

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

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

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

安装的位置尽量选择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的博客-程序员宅基地

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

这种可以自行查找解决,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
 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_62919535/article/details/131770185

智能推荐

数据库常见问题处理-程序员宅基地

文章浏览阅读1.8k次。数据库是系统中最重要的组成部分之一,需要经常维护和监控,及时发现和解决问题,以确保系统的正常运行。在实际运维工作中,需要根据具体情况采取相应的措施,以保证数据库的可靠性和安全性。_数据库常见问题

python3.6(python-gcc:7.3)-anaconda-写c扩展-undefined symbol:找错误-ubuntu_python setup.py build undefined symbol-程序员宅基地

文章浏览阅读1.4k次。https://stackoverflow.com/questions/19178011/error-unknown-file-type-hpp-in-distutils-extension-moduleconda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/conda con..._python setup.py build undefined symbol

使用Matlab设计数字滤波器,从原理到代码_matlab设计滤波器-程序员宅基地

文章浏览阅读6.8w次,点赞244次,收藏1.6k次。本文是在Matlab下设计数字滤波器的一些总结,减少了理论的说明,重在代码的实现方法,给出了普遍使用的数字滤波器代码,修改参数即可移植使用。主要内容包括:滤波器的特性介绍、FIR、IIR数字滤波器的生成方法,包括冲激响应不变法和双线性映射法的实现。最后介绍了Matlab自带的滤波器生成工具的使用方法和扫频信号的生成,可以避开复杂的理论计算,直接设计需要的滤波器,提高工作效率。_matlab设计滤波器

使用@AutoConfigureAfter@AutoConfigureBefore保证顺序为什么不生效_configurationafter-程序员宅基地

文章浏览阅读436次。前提:springboot实例化AutoConfiguration有两种方式:1.@Configuration注解方式2.通过META-INF下的spring.factories文件指定,如:org.springframework.boot.autoconfigure.EnableAutoConfiguration=\org.springframework.boot.actuate.autoconfigure.health.HealthEndpointAutoConfiguration_configurationafter

Python进阶-程序员宅基地

文章浏览阅读1k次。目录基础必会文字的编码函数定义 functiondef 语句函数的调用return 语句函数的调用传参局部变量和全局变量global 语句lambda 表达式(又称匿名函数)id(x) 函数is / is not 运算符None 对象函数式编程python 中的常用高阶函数python 中常用的函数map函数filter 函数sorted 函数模块import 语句python 的第三方模块random 模块

【OpenGL】Shader实例分析(十)- 钻石效果_diamond shader-程序员宅基地

文章浏览阅读1.5w次,点赞5次,收藏34次。好久没有写文章了,赶紧补几篇。最近研究了一个玻璃折射的效果(用在砖石上),虽然没有达到最满意的效果,还是先分享出来,待以后有更好的想法再补充。先看效果吧:这里面有两个效果,左边是unity的免费插件Gem Shader,右边的是我自己实现的,我将分别介绍这两个效果的实现方法。一、知识补充:两个shader都使用了CubeMap...Shader "FX/Diamond"_diamond shader

随便推点

Matlab--使用HeatMap画热图_matlab 画热图加上bar-程序员宅基地

文章浏览阅读1.9w次,点赞8次,收藏59次。Matlab--使用HeatMap画热图_matlab 画热图加上bar

java通过ssh命令获取linux服务器状态信息-程序员宅基地

文章浏览阅读614次。1、使用jar包:jsch-0.1.24.jar2、代码示例import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import com.jcraft.jsch.ChannelExec;..._使用java ssh设备查看状态

hrbust 1414 (贪心)-程序员宅基地

文章浏览阅读84次。#include<cstdio>#include<cmath>#include<algorithm>#include<iostream>typedef struct Node{ double l; double r; bool operator < (const Node &a..._hrbust 1414

满二叉树(Full Binary Tree)&&完全二叉树(Complete Binary Tree)-程序员宅基地

文章浏览阅读4.9k次,点赞2次,收藏3次。满二叉树(Full Binary Tree)、完全二叉树(Complete Binary Tree)_full binary tree

学做 方玲玉 网络营销_网络营销实务(方玲玉)课件及习题参考答案-程序员宅基地

文章浏览阅读1.2k次。内容简介:网络营销实务(方玲玉)课件及参考答案教学内容第01讲 网络正在改写传统商业规则第02讲 网络营销:传统营销的继承与超越(1)实训1 传统企业经营现状及网络平台建设情况调研第03讲 网络营销:传统营销的继承与超越(2)第04讲 创新创意:网络营销的核心竞争力实训2 成功网络卖家网络营销创新创意分析第05讲 目标市场及竞争对手分析第06讲 网民消费模式分析实训3 网络目标用户、竞争对手及消费..._网络营销实务课后题答案

JAVA java学习(16)——————javaweb主流框架介绍(小结)_javaweb框架-程序员宅基地

文章浏览阅读993次。Java Web开发的用到的框架之多简直令人发指,而且因为版本的更新换代导致的问题也是层出不穷。然而这也是Web技术不断演化的结果,要么选择接受,要么引领节奏。原来常用的Javaweb框架是SSH(Struts + Spring + Hibernate)后来随着Spring的强大以及Struts漏洞上的等等问题,演变成为了Spring + SpringMVC + Hibernate/Mybatis。互联网这块比较常见的是Mybatis。再后来也慢慢演变为了Springboot + Mybatis。1. _javaweb框架

推荐文章

热门文章

相关标签