最新版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()

在这里插入图片描述

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

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

相关文章

小程序--vscode配置

要在vscode里开发微信小程序,需要安装以下两个插件: 安装后,即可使用vscode开发微信小程序。 注:若要实现鼠标悬浮提示,则需新建jsconfig.json文件,并进行配置,即可实现。 jsconfig.json内容如…

vue3新特性-defineOptions和defineModel

defineOptions 背景说明&#xff1a; 有 <script setup> 之前&#xff0c;如果要定义 props, emits 可以轻而易举地添加一个与 setup 平级的属性。 但是用了 <script setup> 后&#xff0c;就没法这么干了 setup 属性已经没有了&#xff0c;自然无法添加与其平…

【Java程序设计】【C00278】基于Springboot的数码论坛管理系统(有论文)

基于Springboot的数码论坛管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的数码论坛系统 本系统分为系统功能模块、管理员功能模块以及用户功能模块。 系统功能模块&#xff1a;在系统首页可以查看首页、…

小程序生命周期解析(从概念、启动、运行、销毁到生命周期事件及场景的全面解析)

引言 在当今移动应用激烈竞争的时代&#xff0c;小程序作为一种轻量级、高效便捷的移动应用形式&#xff0c;逐渐成为用户和开发者的热门选择。小程序不仅以其小巧灵活的体积受到用户喜爱&#xff0c;更因为无需安装、即点即用的特性在移动应用领域取得了广泛的普及。随着小程…

三好夫人品牌喜获“爱你一万年.com”中文域名,开启数字化新篇章

三好夫人&#xff0c;以中文域名“爱你一万年.com”强化品牌情感联结&#xff0c;预示全新市场布局。 【北京&#xff0c;2024年2月23日讯】 —— 中国领先的旺夫养生茶品牌“三好夫人”今日宣布&#xff0c;成功注册“爱你一万年.com”中文域名&#xff0c;标志着公司在加强品…

亚马逊,速卖通,国际站测评补单的必要性与方法

亚马逊平台的规则与某宝有所不同。亚马逊平台没有产品推广引流和直通车等功能。而且&#xff0c;与某宝不同的是&#xff0c;亚马逊平台没有广告位和卖家客服。在某宝上&#xff0c;当我们选择款式和颜色时&#xff0c;通常会与卖家客服进行沟通。但在亚马逊上&#xff0c;没有…

深入探索pdfplumber:从PDF中提取信息到实际项目应用【第94篇—pdfplumbe】

深入探索pdfplumber&#xff1a;从PDF中提取信息到实际项目应用 在数据处理和信息提取的过程中&#xff0c;PDF文档是一种常见的格式。然而&#xff0c;要从PDF中提取信息并进行进一步的分析&#xff0c;我们需要使用适当的工具。本文将介绍如何使用Python库中的pdfplumber库来…

DataX - 全量数据同步工具

前言 今天是2024-2-21&#xff0c;农历正月十二&#xff0c;相信今天开始是新的阶段&#xff0c;尽管它不是新的周一、某月一日、某年第一天&#xff0c;尽管我是一个很讲究仪式感的人。新年刚过去 12 天&#xff0c;再过 3 天就开学咯&#xff0c;开学之后我的大学时光就进入了…

STM32控制max30102读取血氧心率数据(keil5工程)

一、前言 MAX30102是一款由Maxim Integrated推出的低功耗、高精度的心率和血氧饱和度检测传感器模块&#xff0c;适用于可穿戴设备如智能手环、智能手表等健康管理类电子产品。 该传感器主要特性如下&#xff1a; &#xff08;1&#xff09;光学测量&#xff1a;MAX30102内置…

2024生物发酵展带您领略视觉盛宴-东滤器材

参展企业介绍 东滤器材&#xff08;石家庄&#xff09;有限公司是一家专注于微孔膜产品、深层过滤产品、纳米纤维产品、一次性过滤产品开发和应用的高科技企业&#xff0c;并于2022年顺利通过河北省“高新技术企业”权威认证。 公司拥有近两千平米符合GMP规范的十万级净化车间…

springmvc基于springboot 的音乐播放系统 _7sdu8

这就意味着音乐播放系统的设计可以比其他系统更为出色的能力&#xff0c;可以更高效的完成最新的ymj排行榜、ymj音乐资讯等功能。 此系统设计主要采用的是JAVA语言来进行开发&#xff0c;JSP技术、采用SSM框架技术&#xff0c;框架分为三层&#xff0c;分别是控制层Controller&…

NXP实战笔记(七):S32K3xx基于RTD-SDK在S32DS上配置ICU输入捕获

目录 1、概述 2、输入捕获SDK配置 2.1、SAIC中断方式 2.2、IPWM或者IPM 1、概述 输入捕获&#xff0c;可以抓取高电平时间、低电平时间、占空比、周期、边沿检测与回调函数、边沿计数&#xff08;ABZ解码&#xff09;、时间戳、唤醒中断。 记录一下根据Emios模块实现上述部分…

AGI|AI到底如何生成视频?Sora究竟为何能引爆科技圈?

目录 一、AI生成视频引发新浪潮 二、生成方法及难点 三、Sora的突破进展 &#xff08;一&#xff09;可生成不同尺寸视频 &#xff08;二&#xff09;可生成1分钟时长视频 &#xff08;三&#xff09;图片生成视频 &#xff08;四&#xff09;场景一致性 &#xff08;五…

【C++私房菜】面向对象中的简单继承

文章目录 一、 继承基本概念二、派生类对象及派生类向基类的类型转换三、继承中的公有、私有和受保护的访问控制规则四、派生类的作用域五、继承中的静态成员 一、 继承基本概念 通过继承&#xff08;inheritance&#xff09;联系在一起的类构成一种层次关系。通常在层次关系的…

Jenkins2.426.3运行时提示:mvn: command not found

Jenkins运行时提示&#xff1a;mvn: command not found 第一步&#xff0c;查看服务器上是否已正确安装maven环境 $mvn --version 如果没有显示上面的信息&#xff0c;则需要重新安装maven环境后再往下进行 第二步&#xff1a;Jenkins配置Maven 例如&#xff1a;/usr/local/…

六、回归与聚类算法 - 欠拟合和过拟合

目录 1、定义 2、原因及解决方法 2.1 正则化 线性回归欠拟合与过拟合线性回归的改进 - 岭回归分类算法&#xff1a;逻辑回归模型保存与加载无监督学习&#xff1a;K-means算法 1、定义 2、原因及解决方法 2.1 正则化

洛谷B2008/2009 题解

#题外话&#xff08;第35篇题解&#xff09;&#xff08;太简单&#xff0c;分两个于心不忍……&#xff09;&#xff08;C语言&#xff09; #先看题目 2008&#xff1a; 2009&#xff1a; 题目链接&#xff1a; 2008https://www.luogu.com.cn/problem/B20082009https://www…

海思SD3403,SS928/926,hi3519dv500,hi3516dv500移植yolov7,yolov8(14)

自己挖了一个坑,准备做SS928/SD3403的Yolov8的移植,主要是后台私信太多人在问相关的问题。先别着急去写代码,因为在hi3516dv500下的移植还是比较顺利。之前在hi3519av100和hi3559av100系列时遇到过一些问题,所以没有继续去移植新的算法。 SS928架构乍一看和hi3559av100特别…

多来客资讯:本地生活服务平台加盟方法

本地生活一般涵盖了吃喝玩乐&#xff0c;而本地生活平台&#xff0c;则是指提供这些吃喝玩乐的互联网平台以及各大APP&#xff0c;比如饿了么、美团等等&#xff0c;这些都可以叫做本地生活服务平台。 因为这些平台都是主要做外卖、团购业务为主&#xff0c;所以&#xff0c;本…

Oracle迁移到mysql-导出mysql所有索引和主键

导出建库表索引等&#xff1a; [rootlnpg ~]# mysqldump -ugistar -pxxx -h192.168.207.143 --no-data -d lndb > lndb20230223-1.sql 只导出索引&#xff1a;参考&#xff1a;MYSQL导出现有库中的索引脚本_mysql 导出数据库所有表的主键和索引-CSDN博客 -- MYSQL导出现有…