最新版opencv4.9安装介绍,基本图像处理详解

文章目录

  • 一、什么是OpenCV ?
  • 二. OpenCV 安装
    • 1. 下载地址
    • 2.安装命令:pip install opencv-python
  • 三、图像基础
    • 1. 基本概念
    • 2. 坐标系
    • 3. 基本操作(彩色图片)
      • (1)读取图片:cv2.imread( )
      • (2)获取图片的形状:img.shape
      • (3)获取图片的大小:img.size
      • (4)显示图片:cv2.imshow( )
      • (5)等待:cv2.waitKey(0)
      • (6)关闭:cv2.destroyAllWindows()
    • 4. 基本操作(灰度图片)
    • 5. BGR 顺序

一、什么是OpenCV ?

OpenCV的全称是:Open Source Computer Vision Library

OpenCV是Intel开源计算机视觉库。它由一系列 C 函数和少量 C++ 类构成,,可以运行在Linux、Windows、Android和Mac OS操作系统上。实现了图像处理和计算机视觉方面的很多通用算法。

优点:

1、 OpenCV 对非商业应用和商业应用都是免费的;

2、 开源的;

3、 可以应用于工程实践中;

缺点:

相对于Matlab而言,OpenCV基于C语言开发,编程复杂,开发周期较长。

可以看出,OpenCV的优缺点正好与Matlab的优缺点相反,两者各有所长,根据不同的要求选择不同的编程环境。

应用领域:

1、人机互动 2、物体识别 3、图象分割 4、人脸识别 5、动作识别 6、运动跟踪 7、机器人 8、运动分析 9、机器视觉 10、结构分析 11、汽车安全驾驶

为什么有OpenCV?

计算机视觉市场巨大而且持续增长,且这方面没有标准API,目前的计算机视觉软件大概有以下三种:
  1.研究代码(慢,不稳定,独立并与其他库不兼容)
  2.耗费很高的商业化工具(比如Halcon, MATLAB+Simulink)
  3.依赖硬件的一些特别的解决方案(比如视频监控,制造控制系统,医疗设备)

这是目前的现状。而标准的API将简化计算机视觉程序和解决方案的开发。OpenCV致力于成为这样的标准API。

二. OpenCV 安装

1. 下载地址

https://opencv.org/releases/
最新版目前是4.9.0 感兴趣的可以看下源码source
在这里插入图片描述

官方文档:https://docs.opencv.org/4.x/d9/df8/tutorial_root.html

2.安装命令:pip install opencv-python

在这里插入图片描述

检查下opencv是否安装成功,进入python环境,导入cv2,如果不报错就是安装成功
在这里插入图片描述

查看opencv版本
在这里插入图片描述

三、图像基础

1. 基本概念

(1)像素:计算机屏幕上所能显示的最小单位。用来表示图像的单位。

(2)RGB,R : Red,G : Green,B : Blue,每个的范围是0~255。
在这里插入图片描述

在这里插入图片描述

一张图片是由无数个像素组成的
在这里插入图片描述

2. 坐标系

这个logo像素是:18 X 20 = 360 pixels
坐标系的原点(0,0)在左上角,每一个点的坐标是:
(height, width, channel)。
channel就是颜色数量,比如RGB,channel就是3

在这里插入图片描述

在这里插入图片描述

3. 基本操作(彩色图片)

(1)读取图片:cv2.imread( )

我们先看看图片的样子
在这里插入图片描述

image = cv2.imread(‘image/123.png’) #注意,图片名称不能带中文。不然读取不到
image
得到的是个数组
在这里插入图片描述

#如果向要读取中文路径或中文文件名,需要转换下
#定义包含中文字符的图片路径
image_path = r"F:\virtualenvdata\ai\Scripts\pythonitems\myopencv\image\灰度.jpg"

#读取带有中文路径的图片
import numpy as np
image = cv2.imdecode(np.fromfile(image_path, dtype=np.uint8), -1)

#imdecode读取的是rgb,如果后续需要opencv处理的话,需要转换成bgr,转换后图片颜色会变化
image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
image.shape
在这里插入图片描述

查看这张图片的RGB分别是多少呢?
#查看图片的RGB
#在opencv中,图片的排序是BGR
#查看图片中某个点的三原色数值

b,g,r = image[40,20]
在这里插入图片描述

如果只想取出三原色中的一种,可以根据下标获取
#取出三原色中的某一种色的数值,根据下标获取
b = image[40,20,0]
b
可以看到跟同时取是一致的
在这里插入图片描述

#重新给像素赋值,更换颜色
image[40,20] = (0,0,255)
可以看到赋值成功
在这里插入图片描述

(2)获取图片的形状:img.shape

返回一个 (rows, heights, channels)
在这里插入图片描述

(3)获取图片的大小:img.size

返回一个rowsheightschannels

(4)显示图片:cv2.imshow( )

(5)等待:cv2.waitKey(0)

(6)关闭:cv2.destroyAllWindows()

图像显示完之后,要记得关闭,不然一直占用内存

cv2.imshow(‘image’,image)
#记得显示的时候,一定要等一下,不然会一闪而过
cv2.waitKey(0) 0 为参数,单位毫秒,表示间隔时间
waitKey(int delay)键盘绑定函数,共一个参数,表示等待毫秒数,将等待特定的几毫秒,看键盘是否有输入,
如果delay大于0,那么超过delayms后,如果没有按键,那么会返回-1,
如果按键那么会返回键盘值,返回值为ASCII值。
如果其参数为0,则表示无限期的等待键盘输入。

#关闭所有窗口
cv2.destroyAllWindows()
显示的很大,而且不能缩小

在这里插入图片描述

4. 基本操作(灰度图片)

(1)读取图片:cv2.imread( img, cv2.IMREAD_GRAYSCALE ) #灰度读取,一定要加上 cv2.IMREAD_GRAYSCALE 这个参数
先看下图片
在这里插入图片描述

#读取灰度图片
image = cv2.imread(‘image/huidu.jpg’,cv2.IMREAD_GRAYSCALE)
image
在这里插入图片描述

(2)获取图片的形状:img.shape,返回一个(rows, heights)
image.shape
可以看到灰度图片不包含channel
在这里插入图片描述

(3)展示灰度图片
#显示灰度图片
cv2.imshow(“hui”,image)
cv2.waitKey(0)
cv2.destroyAllWindows()
在这里插入图片描述

5. BGR 顺序

在这里插入图片描述

每个像素点由BGR三种颜色组成
在这里插入图片描述

#BGR顺序
img_logo = cv2.imread(‘image/logo.png’)
#获取整张图片的BGR
b,g,r = cv2.split(img_logo)

#生成新图片
image_new = cv2.merge([r,g,b])
image_new

#展示
import matplotlib.pyplot as plt
plt.subplot(121)
plt.imshow(img_logo)
plt.subplot(122)
plt.imshow(image_new)
plt.show()
在这里插入图片描述

使用opencv展示

cv2.imshow(‘bgr_image’,img_logo)
cv2.imshow(‘rgb_image’,image_new)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

rt-thread 目录结构

移植适配可能需要修改的部分用红色标记,蓝色表示还需继续调查,绿色会在bring up后修改

arcmap行政区划空缺修复

拿到手的行政区划空间数据中间有空缺,可利用拓扑工具进行修复。 选择自定义》工具条》拓扑 选择拓扑 点击图标 选择需要修补的数据,点击即可 修补完成后

【前端素材】推荐优质后台管理系统Minia平台模板(附源码)

一、需求分析 后台管理系统是一种用于管理网站、应用程序或系统的工具,它通常作为一个独立的后台界面存在,供管理员或特定用户使用。下面详细分析后台管理系统的定义和功能: 1. 定义 后台管理系统是一个用于管理和控制网站、应用程序或系统…

【深度学习:计算机视觉】计算机视觉的最佳数据集 [行业细分]

【深度学习:计算机视觉】计算机视觉的最佳数据集 [行业细分] 什么是机器学习数据集 (ML)?什么是分类数据集?我应该使用合成数据来训练我的机器学习和计算机模型吗?在哪里可以找到机器学习的数据集&#xff…

Spring Boot application.properties和application.yml文件的配置

在Spring Boot中,application.properties 和 application.yml 文件用于配置应用程序的各个方面,如服务器端口、数据库连接、日志级别等。这两个文件是Spring Boot的配置文件,位于 src/main/resources 目录下。 application.properties 示例 …

分享一个我爱工具网源码优化版

应用介绍 本文来自:分享一个我爱工具网源码优化版 - 源码1688 前几天在网上看到了一个不错的工具网源码,但是源码存在一些问题,遂进行了修改优化。 主要修改内容有: 1、后台改为账号密码登录,上传即用,不…

matlab|电动汽车充放电V2G模型

目录 1 主要内容 1.1 模型背景 1.2 目标函数 2 部分代码 3 效果图 4 下载链接 1 主要内容 本程序主要建立电动汽车充放电V2G模型,采用粒子群算法,在保证电动汽车用户出行需求的前提下,为了使工作区域电动汽车尽可能多的消纳供给商场基础…

并发编程之深入理解Java线程

并发编程之深入理解Java线程 线程基础知识 线程和进程 进程 程序由指令和数据组成、但这些指令要运行,数据要读写,就必须要将指令加载至CPU、数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理IO的…

SQL库操作

1、创建数据库 概念 创建数据库:根据项目需求创建一个存储数据的仓库 使用create database 数据库名字创建 数据库层面可以指定字符集:charset/character set 数据库层面可以指定校对集:collate 创建数据库会在磁盘指定存放处产生一个文件夹 创建语法 create …

用户体验设计师如何在 2024抢占先机?

01. 严峻的经济形势和就业市场 我们生活在一个通货膨胀的时代。就从超市抓几个苹果、卷心菜、鸡蛋,看看价格吧!我不得不多次检查收据,因为我简直不敢相信。外出就餐费用上涨了 10-20%,现在 Spotify 和 YouTube 要求收取更高的订阅…

深入理解 v-for 中 key 的重要性

查看本专栏目录 关于作者 还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas&#x…

OR-806A固态继电器SSR光耦,可替代AQW212

OR-806A 固态继电器 VL60V输出端击穿电压光耦 高隔离电压 60 至 600V 输出耐受电压 工业温度范围:-40 to 85℃ 高灵敏度和高速响应 特征 输入和输出之间的高隔离电压 (Viso:5000 V rms)。 控制低电平模拟信号 高灵敏度和…

springboot网站开发02-接入持久层框架mybatisPlus

springboot网站开发02-接入持久层框架mybatisPlus!经过上一小节内容分享,我们的项目嵌套模式框架搭建好了,下面就是开始编辑具体的业务代码了,我们使用到了持久层框架是mybatisPlus插件。下面是一些具体的植入框架的操作步骤。 第…

post请求向服务器发送JSON格式数据设置Content-Type

情景:与后台联调接口时,后台要求传递JSON格式的数据。 处理:我们进行XHR请求时需要设置请求头的Content-Type值为application/json,如下图所示。 浏览器查看具体请求与参数格式(形式)如下:

查找库文件中是否包含某个函数,库文件是否包含某个全局变量,库文件是否包含某个文件

strings 指令 释义:在对象文件或二进制文件中查找可打印的字符串: 用法:需要结合 grep 指令;可以把库文件直接文本打开看下,有字符串的内容,都是可以搜到的 库文件文本方式打开示例 使用示例 # 查找函…

切换分支时候IDEA提示:workspace associated with branch feature has been restored

切换分支时候IDEA提示:workspace associated with branch feature has been restored 这个消息是指与"feature"分支关联的工作区已经恢复。在Git中,工作区是指你当前正在进行修改和编辑的文件和目录。当你切换分支时,Git会自动将工…

编程学习线上提问现场解答流程,零基础学编程从入门到精通

编程学习线上提问现场解答流程 一、前言 之前给大家分享的一款中文编程工具,越来越多的学员使用这个工具学习编程。 在学习中有疑难问题寻求解答流程 1、可以在本平台留言或发私信联系老师 2、可以在群提问及时解答问题 3、通过线上会议的方式,电脑…

uniapp腾讯地图JavaScript Api,H5端和原生APP端可用

因项目需要,在uniapp中集成使用腾讯地图,为了方便维护,希望通过一套代码实现H5和APP同时可用。H5显示相对简单,APP端比较麻烦,记录下实现过程 一、集成步骤 1.使用 renderjs script标签使用renderjs,因为…

dell戴尔电脑灵越系列Inspiron 15 3520原厂Win11系统中文版/英文版

Dell戴尔笔记本灵越3520原装出厂Windows11系统包,恢复出厂开箱预装OEM系统 链接:https://pan.baidu.com/s/1mMOAnvXz5NCDO_KImHR5gQ?pwd3nvw 提取码:3nvw 原厂系统自带所有驱动、出厂主题壁纸、系统属性联机支持标志、Office办公软件、MyD…

DWG控件Web CAD SDK v15发布,支持注释 2D 绘图

Web CAD SDK为ASP.NET控件,可用于通过Internet、Intranet、Sharepoint、Office 365 及其他在线 HTML5 启用技术查看DWG和其他CAD文件。该产品不要求安装 AutoCAD 或其他第三方应用程序或组件,提供该产品时附带 C# 示例。 我们发布了Web CAD SDK 15 &…