opencv安装介绍以及基本图像处理详解

news2025/1/17 6:11:04

文章目录

  • 一、什么是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://www.coloradmin.cn/o/1458655.html

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

相关文章

OPPO公布全新AI战略,AI 手机时代再提速

2024年2月20日,深圳——今日OPPO 举办 AI 战略发布会,分享新一代 AI 手机的四大能力特征,展望由AI驱动的手机全栈革新和生态重构的趋势,并发布由OPPO AI 超级智能体和 AI Pro 智能体开发平台组成的OPPO 1N 智能体生态战略&#xf…

数论 - 容斥原理

文章目录 一、题目描述输入格式输出格式数据范围输入样例:输出样例: 二、算法思路三、代码 在计数时,必须注意没有重复,没有遗漏。为了使重叠部分不被重复计算,人们研究出一种新的计数方法,这种方法的基本思…

酷开科技 | 酷开系统壁纸模式,让过年更有氛围感!

在阵阵爆竹声中,家家户户都沉浸在浓浓的年味中。过年,是团圆,是温暖。团团圆圆的日子里,仪式感不可少,换上一张喜气洋洋的电视壁纸吧,寓意幸福一年又一年。打开酷开系统壁纸模式挑选一张年味十足的壁纸&…

pyside6 两个页面互相跳转

kuka示教器嵌套UR界面操作ros中rviz的UR机器人-CSDN博客 接上一篇,探索了两个页面互相跳转的操作。 1.两个页面 页面:UrWin,主要显示Ur机器人的VNC远程控制界面 页面:ZcWin,主要是选择插针的长度 在Ur远程界面点击下一步会跳转到针选择界面…

前端-游览器渲染原理

渲染 render vue react render 游览器渲染 html字符串 - > 像素信息 游览器是如何渲染页面的? 当游览器的网络线程收到 html文档后,会产生一个渲染任务,并将其传递给渲染主线程的消息队列 在事件循环机制的作用下,渲染主线程取出消息队列中的渲染任务,开启渲染流程. 整…

梵宁教育被误解投诉诈骗全过程始末

近日,梵宁教育因被部分用户投诉涉嫌诈骗而引起了社会的广泛关注。作为一家有着深厚教育背景和良好教育理念的机构,梵宁教育对此事表示高度重视,并在此做出如下澄清和回应。 近期,梵宁教育接到了一些用户的投诉,称其在参…

每日一题——LeetCode1464.数组中两元素的最大乘积

这题就是找数组里的最大值和次大值 方法一 排序 var maxProduct function(nums) {nums.sort((a,b)>b-a)return (nums[0] - 1) * (nums[1] - 1); }; 消耗时间和内存情况: 方法二 一次遍历: var maxProduct function(nums) {let first-1,second-…

常见面试题:TCP的四次挥手和TCP的滑动窗口

说一说 TCP 的四次挥手。 挥手即终止 TCP 连接,所谓的四次挥手就是指断开一个 TCP 连接时。需要客户端和服务端总共发出四个包,已确认连接的断开在 socket 编程中,这一过程由客户端或服务端任意一方执行 close 来触发。这里我们假设由客户端…

工具:clang-format使用

Visual Studio 在扩展-》管理扩展-》联机-》搜索Format on Save (for VS2022)插件,并安装 安装需要关闭VS,安装后重新打开vs。 这样每次保存源文件时就会自动调用vs默认的clang-format.exe对源码进行缩进,空格等进行格式化 如果想使用自定…

Maven依赖下载报错 unable to find valid certification path to requested target

阿里云改了仓库地址&#xff0c;由原来的http改成了https 解决方案一 可以在maven里面中的镜像改成 <mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云公共仓库</name><url>https://maven.aliyun.com/repo…

LeetCode---384周赛

题目列表 3033. 修改矩阵 3034. 匹配模式数组的子数组数目 I 3035. 回文字符串的最大数量 3036. 匹配模式数组的子数组数目 II 一、修改矩阵 简单模拟即可&#xff0c;代码如下 class Solution { public:vector<vector<int>> modifiedMatrix(vector<vecto…

DP读书:《openEuler操作系统》(十)套接字 Socket 数据传输的基本模型

10min速通Socket 套接字简介数据传输基本模型1.TCP/IP模型2.UDP模型 套接字类型套接字&#xff08;Socket&#xff09;编程Socket 的连接1.连接概述(1)基本概念(2)连接状态(3)连接队列 2.建立连接3.关闭连接 socket 编程接口介绍数据的传输1. 阻塞与非阻塞2. I/O复用 数据的传输…

FEP空气采样袋耐强酸应用环境检测污水处理

FEP袋&#xff0c;又称F46&#xff0c;聚全氟乙丙烯膜&#xff0c;是四氟乙烯和六氟丙烯的共聚物。FEP袋子是采用进口聚全氟乙丙烯材质加工而成&#xff0c;可用做化学瓶的储存袋&#xff0c;耐化学腐蚀衬里&#xff0c;离型膜&#xff0c;生物制药细胞培养&#xff0c;可耐压灭…

Win11专业版安装集成了谷歌框架的安卓子系统,包含谷歌商店

1.摘要 上一篇博客讲述了使用微软商店安装安卓子系统的教程 https://blog.csdn.net/RudeTomatoes/article/details/135958882 上述方法的优点是安装过程简单&#xff0c;但是&#xff0c;由于Windows安卓子系统是微软与亚马逊联合开发&#xff0c;默认没有安装谷歌框架。我尝试…

营销系统黑名单优化:位图的应用解析 | 京东云技术团队

背景 营销系统中&#xff0c;客户投诉是业务发展的一大阻碍&#xff0c;一般会过滤掉黑名单高风险账号&#xff0c;并配合频控策略&#xff0c;来减少客诉&#xff0c;进而增加营销效率&#xff0c;减少营销成本&#xff0c;提升营销质量。 营销系统一般是通过大数据分析建模…

h5网页和 Android APP联调,webview嵌入网页,网页中window.open打开新页面,网页只在webview中打开,没有重开一个app窗口

我是h5网页开发&#xff0c;客户app通过webview嵌入我的页面 点击标题window.open跳转到长图页面&#xff0c;客户的需求是在app里新开一个窗口展示长图页面&#xff0c;window.open打开&#xff0c;ios端是符合客户需求的&#xff0c;但是在安卓端他会在当前webview打开 这…

Sora:新一代实时音视频通信框架

一、Sora简介 Sora是一个开源的实时音视频通信框架&#xff0c;旨在提供高效、稳定、可扩展的音视频通信解决方案。它基于WebRTC技术&#xff0c;支持跨平台、跨浏览器的实时音视频通信&#xff0c;并且具备低延迟、高并发、易集成等特点。 --点击进入Sora(一定要科学哦&#x…

MSS与cwnd的关系,rwnd又是什么?

慢启动算法是指数递增的 这种指数增长的方式是慢启动算法的一个核心特点&#xff0c;它确保了TCP连接在开始传输数据时能够快速地探测网络的带宽容量&#xff0c;而又不至于过于激进导致网络拥塞。具体来说&#xff1a; 初始阶段&#xff1a;当TCP连接刚建立时&#xff0c;拥…

Day50 739每日温度 496下一个更大元素I 503下一个更大元素II

739 每日温度 请根据每日 气温 列表&#xff0c;重新生成一个列表。对应位置的输出为&#xff1a;要想观测到更高的气温&#xff0c;至少需要等待的天数。如果气温在这之后都不会升高&#xff0c;请在该位置用 0 来代替。 例如&#xff0c;给定一个列表 temperatures [73, 7…

【Unity】管道流动模拟Shader

【Unity】管道流动模拟Shader 抽象模拟管道介质流动的效果&#xff0c;使用顶点片元着色器。可以调整管线光泽&#xff0c;颜色&#xff0c;流动方向&#xff0c;透明度&#xff0c;流动体粗细&#xff0c;流动速度和横断面。 实现效果 Demo效果 Demo下载地址 管线光泽调整 …