【机器学习】图像处理与深度学习利器:OpenCV实战攻略全面解析

article/2025/6/18 10:13:30

在这里插入图片描述

🎬 鸽芷咕:个人主页

 🔥 个人专栏: 《C++干货基地》《粉丝福利》

⛺️生活的理想,就是为了理想的生活!

前言

OpenCV想必大家都听过跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效由一系列 C 函数和少量 C++ 类构成,可谓是处理图像上的一把好手今天我们就来看下OpenCV的全面攻略让你彻底认识OpenCV。

文章目录

  • 前言
  • 一、 OpenCV简介
    • 1.1 什么是OpenCV?
    • 1.2 OpenCV的历史与发展
    • 1.3 OpenCV的应用领域
  • 二、OpenCV在不用平台的安装
    • 2.1 OpenCV的安装与配置
    • 2.2 OpenCV在Windows系统下的安装
    • 2.3 OpenCV在Linux系统下的安装
    • 2.4 OpenCV在Mac OS系统下的安装
    • 2.5 配置Python环境使用OpenCV
  • 三、OpenCV基础使用
    • 3.1 图像的载入、显示和保存
    • 3.2 图像的基础操作
  • 四、图像色彩空间如何转换
    • 4.1 图像处理与计算机视觉基础
    • 4.2 图像阈值化
    • 4.3 边缘检测
    • 4.4 图像滤波
    • 4.5 图像形态学操作
  • 结尾

一、 OpenCV简介

1.1 什么是OpenCV?

在这里插入图片描述

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库。它由一系列的C函数和少量C++类构成,同时提供Python、Java和MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

# 导入OpenCV库
import cv2# 打印OpenCV版本
print(cv2.__version__)

输出:

4.5.2

OpenCV的设计目标是提供一套简单而且可扩展的计算机视觉库,使得它能够方便地在实际的应用、研究、开发中被使用。

1.2 OpenCV的历史与发展

OpenCV的起源可以追溯到1999年,当时在英特尔公司由一群热情的研发工程师开始进行开发。2000年,OpenCV以开源的方式发布,旨在推动计算机视觉的发展并帮助更多人应用这一技术。自此之后,OpenCV已经不断发展,增加了大量新的功能,并已成为全球最流行的计算机视觉库之一。

1.3 OpenCV的应用领域

OpenCV具有极广的应用领域,它包括但不限于:

  • 人脸识别和物体识别:这是OpenCV的一项重要功能,应用在许多领域,如安全监控、交互设计等。
  • 图像和视频分析:如图像增强、图像分割、视频跟踪等。
  • 图像合成和3D重建:在图像处理和计算机视觉领域,OpenCV可以用于创建AR或VR效果,生成3D模型等。
  • 机器学习:OpenCV内置了大量的机器学习算法,可以用于图像分类、聚类等任务。
  • 深度学习:OpenCV中的dnn模块提供了一系列深度学习模型的接口,用户可以加载预训练模型进行图像识别、目标检测等任务。
# 例如,以下代码展示了如何使用OpenCV进行图像读取和显示
import cv2# 读取一张图像
img = cv2.imread('image.jpg')# 显示图像
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

综上,OpenCV凭借其强大的功能、开源的优势以及广泛的应用领域,成为了学者和工业界的重要工具。

二、OpenCV在不用平台的安装

2.1 OpenCV的安装与配置

OpenCV的安装方式根据不同的操作系统和使用环境有所不同。以下我们将分别介绍在Windows、Linux和Mac OS下的安装方式,以及如何配置Python环境使用OpenCV。

2.2 OpenCV在Windows系统下的安装

在Windows系统下,推荐使用Python的包管理工具pip来安装OpenCV。你可以在命令行中运行以下命令来安装:

pip install opencv-python

如果你需要使用到OpenCV的额外模块(如xfeatures2d等),可以安装opencv-contrib-python包:

pip install opencv-contrib-python

2.3 OpenCV在Linux系统下的安装

在Linux系统下,我们同样可以使用pip来安装OpenCV。打开终端,运行以下命令:

pip install opencv-python

同样,如果你需要使用到OpenCV的额外模块,可以安装opencv-contrib-python包:

pip install opencv-contrib-python

2.4 OpenCV在Mac OS系统下的安装

在Mac OS下,我们同样可以使用pip来安装OpenCV。打开终端,运行以下命令:

pip install opencv-python

如果你需要使用到OpenCV的额外模块,可以安装opencv-contrib-python包:

pip install opencv-contrib-python

2.5 配置Python环境使用OpenCV

安装完成OpenCV后,我们可以在Python环境中导入cv2模块来使用OpenCV的功能。你可以创建一个新的Python脚本,然后在其中输入以下代码来测试OpenCV是否安装成功:

import cv2# 打印OpenCV版本
print(cv2.__version__)

如果输出了你所安装的OpenCV版本号,那么恭喜你,你已经成功安装并配置好了OpenCV!

总的来说,无论是在Windows、Linux还是Mac OS系统下,安装和使用OpenCV都是相对简单的。只需要几个简单的命令,就可以开始你的OpenCV之旅了。

三、OpenCV基础使用

在此部分,我们将介绍一些OpenCV的基础知识,包括图像的载入、显示和保存,以及图像的基本操作和色彩空间的转换。

3.1 图像的载入、显示和保存

在OpenCV中,我们通常使用imread()函数来载入一张图像,使用imshow()函数来显示一张图像,使用imwrite()函数来保存一张图像。

以下是一个示例:

import cv2# 载入一张图像
img = cv2.imread('image.jpg')# 显示图像
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()# 保存图像
cv2.imwrite('new_image.jpg', img)

3.2 图像的基础操作

OpenCV提供了一系列的函数来进行图像的基础操作,包括但不限于:

  • 获取和修改像素值
  • 获取图像的基本属性(如大小、通道数、像素数等)
  • 设置图像的ROI(Region of Interest)
  • 拆分和合并图像通道
# 获取和修改像素值
px = img[100,100]
print(px)# 修改像素值
img[100,100] = [255,255,255]
print(img[100,100])# 获取图像属性
print(img.shape)
print(img.size)
print(img.dtype)# 设置ROI
roi = img[100:200, 100:200]# 拆分和合并图像通道
b,g,r = cv2.split(img)
img = cv2.merge((b,g,r))

四、图像色彩空间如何转换

OpenCV提供了200+种颜色空间的转换方法,但是我们最常用的还是RGB<->Gray和RGB<->HSV的转换。

我们可以使用cv2.cvtColor()函数来进行颜色空间的转换,如下例:

# 转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 转换为HSV图像
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

这是OpenCV基础操作的简单介绍,这些操作是我们在进行更高级的图像处理之前需要掌握的基础知识。

4.1 图像处理与计算机视觉基础

在计算机视觉中,图像处理是一个关键的环节,它包括图像阈值化、边缘检测、图像滤波、图像形态学操作和图像二值化等操作。下面我们将一一介绍。
在这里插入图片描述

4.2 图像阈值化

图像阈值化是将图像从灰度转换为二值化图像的过程,OpenCV提供了cv2.threshold()函数来进行这项操作。

import cv2
import numpy as np# 载入图像并转为灰度图
img = cv2.imread('image.jpg',0)# 阈值化处理
ret,thresh1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY)# 显示处理结果
cv2.imshow('threshold',thresh1)
cv2.waitKey(0)
cv2.destroyAllWindows()

4.3 边缘检测

边缘检测是计算机视觉中的常见任务,它可以用来识别图像中的物体。Canny边缘检测是一种常用的边缘检测算法,OpenCV中可以使用cv2.Canny()函数来进行Canny边缘检测。

import cv2
import numpy as np# 载入图像
img = cv2.imread('image.jpg',0)# 进行Canny边缘检测
edges = cv2.Canny(img,100,200)# 显示处理结果
cv2.imshow('edges',edges)
cv2.waitKey(0)
cv2.destroyAllWindows()

4.4 图像滤波

图像滤波是计算机视觉中常见的图像预处理方法,OpenCV提供了各种滤波函数,如cv2.filter2D()cv2.blur()cv2.GaussianBlur()等。

import cv2
import numpy as np# 载入图像
img = cv2.imread('image.jpg')# 使用高斯滤波进行图像平滑处理
blur = cv2.GaussianBlur(img,(5,5),0)# 显示处理结果
cv2.imshow('blur',blur)
cv2.waitKey(0)
cv2.destroyAllWindows()

4.5 图像形态学操作

形态学操作是基于图像形状的一系列操作,包括腐蚀、膨胀、开运算和闭运算等。OpenCV提供了cv2.erode()cv2.dilate()cv2.morphologyEx()等函数来进行形态学操作。

import cv2
import numpy as np# 载入图像
img = cv2.imread('image.jpg',0)# 创建一个5x5的结构元素
kernel = np.ones((5,5),np.uint8)# 进行膨胀操作
dilation = cv2.dilate(img,kernel,iterations = 1)# 显示处理结果
cv2.imshow('dilation',dilation)
cv2.waitKey(0)
cv2.destroyAllWindows()

结尾


http://www.hkcw.cn/article/JZGXRYfPnO.shtml

相关文章

机器学习中的图像处理与计算机视觉

引言 在现代计算机科学中&#xff0c;图像处理和计算机视觉已成为最活跃的研究领域之一&#xff0c;这得益于机器学习和深度学习的发展。本文将深入探讨图像处理与计算机视觉的基础概念、常见应用、关键技术、常用工具&#xff0c;以及在这些领域中的代码示例。通过本篇文章&a…

Fiji —— 基于 imageJ 的免费且开源的图像处理软件

文章目录 一、Fiji —— 基于 imageJ 的免费且开源的图像处理软件1.1、Fiji工具安装&#xff08;免费&#xff09;1.2、Fiji源码下载1.2、Fiji - Plugins插件安装 二、功能详解2.0、Fiji - ImageJ&#xff08;Web应用程序&#xff09;2.1、常用功能&#xff08;汇总&#xff09…

深入了解 OpenCV:C# 开发者的图像处理利器

OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉与图像处理库&#xff0c;自 2000 年由 Intel 开发以来&#xff0c;已经发展成为业界领先的图像处理框架之一。凭借其跨平台特性、丰富的功能集以及活跃的社区支持&#xff0c;OpenCV…

巴黎世家平角短裤造型裙子已缺货 时尚争议再起

近日,奢侈品牌巴黎世家推出的一款售价4500元的女款半身裙在网上引发热议。不少网友吐槽该裙子造型与平角短裤极为相似,直呼“看不懂时尚”。据巴黎世家官网介绍,这款深蓝色弹力平纹针织半身裙亮相于2025秋季系列Look 50和Look 54。裙子采用弹力棉混纺平纹针织面料,设计为平…

日本男子杀害妻子幼女后自杀 家庭悲剧震惊邻里

6月2日上午,日本大阪府吹田市发生一起悲剧。一名26岁男子从世博会馆附近的一座天桥上跳下自杀。警方随后在其家中发现了他妻子和两名幼女的尸体,三人腹部血流不止,已经死亡。现场还发现了一把带血的菜刀和一张字条,字条上写着对女儿和妻子的歉意。据警方透露,当天早上6点2…

女婴术后脑损伤疑撞到床栏 家属求真相艰难

近日,四川的徐女士反映,她五个多月大的孩子鱼鱼在四川大学华西第二医院锦江院区做完心脏手术后,头部出现了一个创口。经检查,鱼鱼被诊断为脑出血和脑损伤,并伴有癫痫。当地卫健委介入调查后未能得出明确结论。5月29日,记者在事发医院见到已经一岁多的鱼鱼,她仍旧不会爬行…

A股六月开门红 三大指数集体反弹

端午节三天小长假后,六月首个交易日A股三大指数集体反弹,给股民朋友们带来了一个“开门红”。这是继五月“开门红”之后,A股再度取得月度良好开局。截至收盘,沪指涨0.43%,深成指涨0.16%,创业板指涨0.48%,北证50指数涨1.03%。全市场成交额达到11638亿元,较上日放量4亿元…

端午节假期国内出游1.19亿人次 文旅融合添彩传统节日

文化和旅游部6月3日公布了2025年端午节假期文化和旅游市场的情况。经测算,假期三天内,全国国内出游人数达到1.19亿人次,同比增长5.7%;国内出游总花费为427.30亿元,同比增长5.9%。在假期期间,群众积极参与赛龙舟、吃粽子、唱山歌和赏古曲等活动,传统节日文化内涵与旅游发…

乌克兰袭击克里米亚大桥 画面曝光 大桥严重受损

据乌克兰独立新闻社等媒体6月3日报道,乌克兰方面对克里米亚大桥发动了袭击。乌克兰国家安全局表示,克里米亚大桥在这次袭击中严重受损。截至报道时,俄罗斯官方尚未对此消息作出公开回应。责任编辑:0764

媒体评游客因小孩进入拍摄画面打架 迪士尼冲突引热议

5月31日,有网友发布视频称,在上海迪士尼疯狂动物城园区内,一对情侣和一家三口发生肢体冲突。视频中显示,双方在现场扭打,周围游客纷纷上前劝阻。6月1日晚,上海市公安局浦东分局通报了此事。据通报,5月31日18时许,浦东公安分局接到报警,称迪士尼乐园内有人打架。经初步…

广州即将进入“蒸烤”模式 高温晴热天气来袭

广东省气象部门预计,端午假期最后一天起的新一轮“龙舟水”强降水过程将在4日开始减弱。在本轮“龙舟水”减弱前,广东各地仍需防御风雨影响;即使在“龙舟水”减弱后,仍需警惕地质灾害发生。此外,在“龙舟水”间歇期,广东各地还需留意高温天气。根据广东省气象部门的观测和…

南海部分海域有火箭残骸坠落 航行警告发布

据中国海事局消息,清澜海事局发布航行警告,6月4日0时至6月6日24时,南海部分海域将有火箭残骸掉落,禁止驶入。责任编辑:0764

当年他步行3公里送歼-10原型机首飞 见证中国航空辉煌

我国自主研发的出口型战斗机歼-10CE在国际地区冲突中表现出色,引起了国际军贸市场的广泛关注。这款由成都所设计、成飞制造的单发单座多用途战斗机具备体系协同作战能力,在强电磁对抗环境下可进行超视距多目标攻击及多模式对地精确打击。在机库中,记者见到了参与歼-10飞机研…

郑钦文不敌萨巴伦卡止步法网8强 期待不断突破

6月3日17时,2025法网女单1/4决赛中,郑钦文以0-2不敌赛会头号种子萨巴伦卡。首盘比赛中,双方各破对方一个发球局,最终在抢七中,郑钦文以6-7(3)失利。这场比赛是郑钦文与萨巴伦卡的第8次交手。此前的6次对决中,郑钦文均未能取胜,因此萨巴伦卡被视为她职业生涯中的一座“…

吴京的车又翻了 生活中的小插曲

6月3日,吴京发文调侃自己再次翻车,称“哈哈一不留神,一个小断头,啪…..生活中不也是经常这样嘛….”此前在5月27日凌晨,吴京曾深夜发文表示:“安全完成SS5赛段。又翻车了,但人没事儿!大家放心!”责任编辑:0764

中央巡视期间 王年生被查 海南反腐再传捷报

中央巡视组进驻后,海南反腐行动取得新进展。海南省纪委监委于6月3日发布消息,原海南省农村信用社联合社党委书记、理事长王年生因涉嫌严重违纪违法,正接受纪律审查和监察调查。王年生曾担任海南省政府金融工作办公室主任、省政府办公厅党组成员、海南银行筹建工作组组长及海…

俄方会如何回应乌蛛网行动 无人机袭击引发紧张态势

乌克兰国家安全局(SBU)宣布,他们出动117架无人机对俄罗斯多个州的军事基地实施袭击,成功击中41架俄军战机,导致俄罗斯主要机场中约34%的战略轰炸机遭到攻击,损失达到70亿美元。这一消息让外界惊讶,尤其是袭击目标包括俄远东地区的机场。乌官员随后更新数据称,至少有13架…

javaEE->多线程:线程池

线程池 线程诞生的意义&#xff1a;因为进程的创建/销毁&#xff0c;太重量了&#xff08;比较慢&#xff09; 但如果近一步提高创建/销毁的频率&#xff0c;线程的开销也不容忽视。 有两种方法可以提高效率&#xff1a; 1.协程&#xff08;轻量级线程&#xff09;&#xff…

ubuntu24.04安装教程(图文详解)

Ubuntu 24.04 LTS&#xff0c;代号 Noble Numbat&#xff0c;于 2024 年 4 月 25 日发布&#xff0c;现在可以从 Ubuntu 官方网站及其镜像下载。此版本将在 2029 年 4 月之前接收为期五年的官方安全和维护更新。 关于 Ubuntu 24.04 LTS 的一些关键点&#xff1a; 发布日期&am…

马龙不参加2025赛季乒超联赛 樊振东领衔出战

2025赛季乒超联赛将于6月9日开赛。乒乓世界TTW杂志公布了各俱乐部注册参赛的球员名单,樊振东将代表上海地产集团出战,而马龙则不会参加本赛季的比赛。具体赛程方面,2025赛季乒超联赛分为四个阶段进行。第一阶段比赛于6月9日至11日在河北雄安新区举行;第二阶段比赛于7月25日…