Python中的OpenCV详解
文章目录
- Python中的OpenCV详解
- 一、引言
- 二、OpenCV基础操作
- 1、OpenCV简介
- 2、安装OpenCV
- 3、图像读取与显示
- 三、图像处理技术
- 1、边缘检测
- 2、滤波技术
- 四、使用示例
- 1、模板匹配
- 五、总结
Python中的OpenCV详解
一、引言
在当今数字化社会中,图像处理和计算机视觉技术应用广泛,从日常的图像编辑、滤镜应用到专业的智能安防、自动驾驶等领域,这些技术无处不在。对于开发者来说,OpenCV是一个功能强大的库,提供了各种图像处理和计算机视觉的工具,广泛用于Python开发中。本文将从基础入门讲起,带你一步步掌握OpenCV的常用功能,涵盖图像的读取、显示、保存,基础处理技术如边缘检测、滤波,最终深入实战应用,如图像特征提取、人脸检测等。
二、OpenCV基础操作
1、OpenCV简介
OpenCV(Open Source Computer Vision Library) 是一个开源的计算机视觉库,最早由Intel开发,专注于实时图像处理。它为开发者提供了丰富的工具集,包括图像和视频处理、特征检测、机器学习、图像分析等。OpenCV的优势包括跨平台支持、丰富的功能和高效性。
2、安装OpenCV
在Python中,使用pip
可以轻松安装OpenCV。建议安装opencv-python
包,该包包含基本的图像处理功能。
pip install opencv-python
对于需要视频处理功能的用户,还可以安装opencv-python-headless
包,避免安装过大的GUI依赖。
pip install opencv-python-headless
3、图像读取与显示
在开始使用OpenCV之前,我们首先要学习如何读取和显示图像。
import cv2# 读取图像
image = cv2.imread('path_to_image.jpg')# 显示图像
cv2.imshow('Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
三、图像处理技术
1、边缘检测
边缘检测是图像处理中的一个重要步骤,用于识别图像中的边缘。Canny边缘检测是一种流行的边缘检测算法。
import cv2
import numpy as np# 读取图像
image = cv2.imread('path_to_image.jpg')
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 应用高斯模糊
blurred_image = cv2.GaussianBlur(gray_image, (5, 5), 0)# 应用Canny边缘检测
edges = cv2.Canny(blurred_image, 50, 150)# 显示结果
cv2.imshow('Edges', edges)
cv2.waitKey(0)
cv2.destroyAllWindows()
2、滤波技术
滤波是图像处理中用于减少噪声和细节的常用技术。以下是均值滤波、中值滤波和双边滤波的示例。
# 均值滤波
blurred_image = cv2.blur(image, (5, 5))# 中值滤波
median_blurred_image = cv2.medianBlur(image, 5)# 双边滤波
bilateral_blurred_image = cv2.bilateralFilter(image, 9, 75, 75)
四、使用示例
1、模板匹配
模板匹配是一种在较大图像中寻找和识别小图像(模板)位置的方法。以下是模板匹配的代码示例。
import cv2# 读取图像和模板
img_src = cv2.imread('lena.jpg')
img_templ = cv2.imread('templ.jpg')# 模板匹配
result = cv2.matchTemplate(img_src, img_templ, cv2.TM_CCOEFF_NORMED)# 计算匹配位置
min_max = cv2.minMaxLoc(result)
match_loc = min_max[3]# 标注位置
img_disp = img_src.copy()
cv2.rectangle(img_disp, match_loc, (match_loc[0] + img_templ.shape[1], match_loc[1] + img_templ.shape[0]), (0, 255, 0), 5, 8, 0)# 显示结果
cv2.imshow('Matched Location', img_disp)
cv2.waitKey(0)
cv2.destroyAllWindows()
五、总结
OpenCV是一个功能强大且易于使用的库,广泛应用于图像处理和计算机视觉领域。从读取和显示图像,到颜色空间转换、图像缩放、翻转、边缘检测、高斯模糊、形态学操作以及图像平滑和绘制,本文详细介绍了OpenCV的基础使用方法,附带了丰富的代码示例,帮助读者更直观地理解和应用。
版权声明:本博客内容为原创,转载请保留原文链接及作者信息。
参考文章:
- Python OpenCV全面教程:从基础到高级的全方位指南
- OpenCV-Python教程:模板匹配(matchTemplate)
相关文章:

Python中的OpenCV详解
文章目录 Python中的OpenCV详解一、引言二、OpenCV基础操作1、OpenCV简介2、安装OpenCV3、图像读取与显示 三、图像处理技术1、边缘检测2、滤波技术 四、使用示例1、模板匹配 五、总结 Python中的OpenCV详解 一、引言 在当今数字化社会中,图像处理和计算机视觉技术…...
IMX6ULL开发板学习嵌入式技术过程中为了测试本地网络是否正常而常用的Ping命令
Windows ip:192.168.5.10 Ubuntu ip:192.168.5.11 开发板 ip:192.168.5.9 最常用的 最常用的两个是开发板和Ubuntu的互ping 开发板→Ubuntu ping 192.168.5.11Ubuntu→开发板 ping 192.168.5.9完整的如下 Windows→Ubuntu ping 192.16…...

Blue Ocean 在Jenkins上创建Pipeline使用详解
BlueOcean是Jenkins的一个插件,它提供了一套可视化操作界面来帮助用户创建、编辑Pipeline任务。以下是对BlueOcean中Pipeline操作的详细解释: 一、安装与启动BlueOcean 安装:在Jenkins的“系统管理”->“插件管理”->“可选插件”中搜索“BlueOcean”,然后点击“Ins…...

2024 年最新前端ES-Module模块化、webpack打包工具详细教程(更新中)
模块化概述 什么是模块?模块是一个封装了特定功能的代码块,可以独立开发、测试和维护。模块通过导出(export)和导入(import)与其他模块通信,保持内部细节的封装。 前端 JavaScript 模块化是指…...

photoshop的2个形状-箭头
有时候用ps画一些教程类图文,需要用到箭头. 另外自己画了一个镂空的长方形和正方形 形状的路径一般在Custom Shapes文件夹内 例如 E:\photoshopCS4\Adobe Photoshop CS4\Presets\Custom Shapes...

【经验分享】搭建本地训练环境知识点及方法
最近忙于备考没关注,有次点进某小黄鱼发现首页出现了我的笔记还被人收费了 虽然我也卖了一些资源,但我以交流、交换为主,笔记都是免费给别人看的 由于当时刚刚接触写的并不成熟,为了避免更多人花没必要的钱,所以决定公…...

AI知识-多模态(Multimodal)
摘要 本文将探讨多模态(Multimodal)的概念,包括其通俗理解、技术原理、应用场景,以及进行总结。我们将通过一个简要的介绍来了解多模态技术,并深入探讨其在人工智能和机器学习领域的重要性。 通俗理解 多模态&#x…...
代码随想录 leetcode-数据结构刷题笔记
文章目录 一、数组1.1 二分查找 1.1.1 二分查找 1.1.2 搜索插入位置1.1.3 排序数组中查找元素第一和最后一个位置1.1.4 x的平方根 1.1.5 有效的完全平方数 1.2 快慢指针 1.2.1 移除元素 1.2.2 删除有序数组中的重复项 1.2.3 移动0 1.2.4 比较含退格的字符串 1.2.5 有序数组的平…...

Oracle最佳实践-优化硬解析
前段时间参加oracle CAB,oracle高级服务部门做了一个数据库最佳实践的报告,其中就有一项就是解决未使用绑定变量但执行次数很多的SQL; 对于一个数据库来说如果不知道该如何优化,那么最简单最有效的优化就是减少硬解析,…...

Windows中将springboot项目运行到docker的容器中
0,先打包好项目,再启动docker 1,在Java项目根目录下创建一个名为Dockerfile的文件(没有扩展名),并添加以下内容。 # 使用OpenJDK的基础镜像 FROM openjdk:8-jdk-alpine# 设置工作目录 WORKDIR /app# 将项…...
30、使用ESP8266跟SG90舵机制作四足蜘蛛机器人
目录 1、简介 2、使用例子 3、代码解析 4、资源下载 正文 1、简介 本篇使用ESP8266跟SG90舵机制作四足蜘蛛机器人,使用的180度舵机有8个,需要一块16路舵机控制板,也可以使用小一点的控制板8路也够了。下面开始今天的教程,源码在文章末尾自行下载,力求大家都能看懂。…...

相比普通LED显示屏,强力巨彩软模组有哪些优势?
在科技技术的加持下,LED显示屏市场各类创新产品层出不穷,为市场带来了无限可能。其中,强力巨彩R系列H版(软模组)凭借其独特的技术优势,在行业内脱颖而出。那么,相比常规LED显示屏,强…...
部门操作和日志
PostMapping("/depts") public Result add(RequestBody Dept dept){System.out.println("添加部门: " dept);deptService.add(dept);return Result.success(); }Override public void add(Dept dept) {dept.setCreateTime(LocalDateTime.now());dept.setU…...

antdv-<a-button>中属性的使用
UI组件库(User Interface Component Library)是一种预先构建好的、可重用的用户界面元素集合,旨在帮助开发者更快速、更简便地构建用户界面。这些组件通常包括按钮、表单、导航栏、模态框等,能够提供一致的外观和交互风格…...
python解题之寻找最大的葫芦
问题描述 问题描述 在一场经典的德州扑克游戏中,有一种牌型叫做“葫芦”。“葫芦”由五张牌组成,其中包括三张相同牌面值的牌 �a 和另外两张相同牌面值的牌 �b。如果两个人同时拥有“葫芦”,我们会优先比较牌 &#…...
iOS 环境搭建教程
本文档将详细介绍如何在 macOS 上搭建 iOS 开发环境,以便进行 React Native 开发。(为了保证环境一致 全部在网络通畅的情况下运行) 1. 安装 Homebrew Homebrew 是 macOS 的包管理工具,我们将通过它来安装开发所需的工具。 安装…...

制作容器镜像
容器基础镜像制作 由于项目使用麒麟操作系统,需要在麒麟桌面操作系统和服务器操作系统里编译代码,如果每次都在物理机和虚拟机里编译太不方便,也无法使用常用的 jenkins k8s 组成的 CI/CD 编译环境,如果基于整个ISO太大了&#…...
基于Python对xslxslx文件进行操作
利用python操作表格文件 读取xsl格式文件-源码 import xlrd# 读取xls文件中的工作对象 wb xlrd.open_workbook(示例文件/xxx物理学与信息技术学院.xls) print(wb)# 获取所有的工作表名称 sheet_names wb.sheet_names() # print(sheet_names)# 选择要读取的具体工作表对象 s…...

语音芯片赋能可穿戴设备:开启个性化音频新体验
在科技日新月异的今天,语音芯片与可穿戴设备的携手合作,正引领我们步入一个前所未有的个性化音频时代。这一创新融合,用户可以享受到更加个性化、沉浸式的音频体验。下面将详细介绍语音芯片与可穿戴设备合作的优点和具体应用。 1. 定制化音效…...

Unity学习笔记(一)如何实现物体之间碰撞
前言 本文为Udemy课程The Ultimate Guide to Creating an RPG Game in Unity学习笔记 如何实现物体之间碰撞 实现物体之间的碰撞关键组件:Rigidbody 2D(刚体)、Collider 2D(碰撞体)、Sprite Renderer(Sprite渲染器) 实现物体之间的碰撞 …...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...

云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...