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)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于python的Selenium webdriver环境搭建(笔记)

一、PyCharm安装配置Selenium环境 本文使用环境:windows11、Python 3.8.1、PyCharm 2019.3.3、Selenium 3.141.0 测试开发环境搭建综述 安装python和pycharm安装浏览器安装selenium安装浏览器驱动测试环境是否正确 这里我们直接从第三步开始 1.1 Seleium安装 …

LLMC:大语言模型压缩工具的开发实践

关注:青稞AI,学习最新AI技术 青稞Talk主页:qingkelab.github.io/talks 大模型的进步,正推动我们向通用人工智能迈进,然而庞大的计算和显存需求限制了其广泛应用。模型量化作为一种压缩技术,虽然可以用来加速…

【渗透测试】信息收集二

其他信息收集 在渗透测试中,历史漏洞信息收集是一项重要的工作,以下是相关介绍: 历史漏洞信息收集的重要性 提高效率:通过收集目标系统或应用程序的历史漏洞信息,可以快速定位可能存在的安全问题,避免重复…

TQ15EG开发板教程:使用SSH登录petalinux

本例程在上一章“创建运行petalinux2019.1”基础上进行,本例程将实现使用SSH登录petalinux。 将上一章生成的BOOT.BIN与imag.ub文件放入到SD卡中启动。给开发板插入电源与串口,注意串口插入后会识别出两个串口号,都需要打开,查看串…

微信小程序5-图片实现点击动作和动态加载同类数据

搜索 微信小程序 “动物觅踪” 观看效果 感谢阅读,初学小白,有错指正。 一、功能描述 a. 原本想通过按钮加载背景图片,来实现一个可以点击的搜索button,但是遇到两个难点,一是按钮大小调整不方便(网上搜索…

学习笔记:从ncsi/nc-si协议和代码了解网络协议的设计范式

学习笔记:从ncsi/nc-si协议和代码了解网络协议的设计范式 参考文档: https://www.dmtf.org/standards/published_documents https://www.dmtf.org/dsp/DSP0222 https://www.dmtf.org/sites/default/files/standards/documents/DSP0222_1.2.0.pdf参考代…

3D 生成重建030-SV3D合成环绕视频以生成3D

3D 生成重建030-SV3D合成环绕视频以生成3D 文章目录 0 论文工作1 论文方法2 实验结果 0 论文工作 论文提出了Stable Video 3D (SV3D)——一个用于生成围绕三维物体的高分辨率图像到多视角视频的潜在视频扩散模型。最近关于三维生成的文献提出了将二维生成模型应用于新视图合成…

3D 生成重建035-DiffRF直接生成nerf

3D 生成重建035-DiffRF直接生成nerf 文章目录 0 论文工作1 论文方法2 实验结果 0 论文工作 本文提出了一种基于渲染引导的三维辐射场扩散新方法DiffRF,用于高质量的三维辐射场合成。现有的方法通常难以生成具有细致纹理和几何细节的三维模型,并且容易出…

Spark执行计划解析后是如何触发执行的?

在前一篇Spark SQL 执行计划解析源码分析中,笔者分析了Spark SQL 执行计划的解析,很多文章甚至Spark相关的书籍在讲完执行计划解析之后就开始进入讲解Stage切分和调度Task执行,每个概念之间没有强烈的关联,因此这中间总感觉少了点…

探索Python的魔法工具箱:functools

文章目录 探索Python的魔法工具箱:functools背景库介绍安装简单库函数使用方法lru_cachepartialreducecmp_to_keytotal_ordering 场景应用缓存数据库查询结果固定函数参数计算序列的累积和自动补全比较方法将比较函数转换为key函数 常见Bug及解决方案Bug 1: lru_cac…

leetcode 3266 K次乘运算后的最终数组II 题解

题目大意 原题面 给你一个数组 nums,然后进行 k 轮游戏,每轮游戏都会选择数组当中最小的元素然后乘上一个数 multiplier(题目给出),问你 k 轮游戏结束之后,这个数组长什么样子,所有的元素要对 …

事务管理与锁机制

title: 事务管理与锁机制 date: 2024/12/14 updated: 2024/12/14 author: cmdragon excerpt: 在数据库系统中,事务管理至关重要,它确保多个数据库操作能够作为一个单一的逻辑单元来执行,从而维护数据的一致性和完整性。一个良好的事务管理系统能够解决并发操作带来的问题…

各种消息中间件介绍

消息中间件是一种在分布式系统中实现消息传递的软件架构,它允许不同的应用程序或系统组件之间异步地交换信息。 1. Apache Kafka Kafka是一个分布式流处理平台,能够处理高吞吐量的数据。它主要用于构建实时数据管道和流应用程序。 • Broker:…

mall-admin-web开源项目搭建教程(图文)

本章教程,介绍如何在本地部署运行mall-admin-web这个开源项目。 开源地址:https://gitee.com/macrozheng/mall-admin-web mall-admin-web是一个电商后台管理系统的前端项目,基于Vue+Element实现。主要包括商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计…

使用FastGPT制做一个AI网站日志分析器

越来越的多网站面临每天上千次的扫描和各类攻击,及时发现攻击IP,并有效的屏蔽不良访问成为网站安全的重要保障,这里我们使用AI来完成对网站日志的日常分析。 我们来使用FastGPT来制做一个AI网站日志析器,下面就开始: …

npm : 无法加载文件 D:\nodejs\npm.ps1

问题描述 npm run serve 启动一个Vue项目,报错如下: npm : 无法加载文件 D:\nodejs\npm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/? LinkID135170 中的 about_Execution_Policies。…

UE4_贴花_贴花基础知识一

贴花可以将材料和各种材料元素投影到表面上。您可以使用它们来添加独特的效果。贴花 是一种可以投射到网格体(包括静态网格体和骨骼网格体)上的材质。无论这些网格体的移动性(Mobility)是静态(Static)还是可…

ShardingSphereProxy:快速入门

使用 Docker 运行 ShardingSphere 在基于 Docker 安装 ShardingSphere 时,按照官方文档《使用 Docker :: ShardingSphere》所提供的步骤操作即可。 在运行ShardingSphereProxy之前,我们需要基于我们的测试场景修改配置文件,我测试场景中主要…

Unity 获取鼠标点击位置物体贴图颜色

实现 Ray ray Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out RaycastHit hit)) {textureCoord hit.textureCoord;textureCoord.x * textureMat.width;textureCoord.y * textureMat.height;textureColor textureMat.GetPixel(Mathf.Flo…

Python高性能web框架-FastApi教程:(3)路径操作装饰器方法的参数

路径操作装饰器方法的参数 1. 定义带有参数的POST请求路由 app.post(/items,tags[这是items测试接口],summary这是items测试的summary,description这是items测试的description,response_description这是items测试的response_description) def test():return {items: items数据…