首页 > 其他分享 >opencv基础

opencv基础

时间:2023-03-14 20:24:35浏览次数:48  
标签:img OpenCV Python cv2 基础 opencv 图像 imread

Python 和 OpenCV 的结合是计算机视觉领域中应用最为广泛的一种方式,它们的结合使得开发者可以快速、高效地完成各种视觉任务。本文将介绍 Python 和 OpenCV 的基础使用,包括安装、图像读取、基本操作、特征提取等内容。

安装

在使用 Python 和 OpenCV 前,我们需要先安装它们。推荐使用 Anaconda 或者 Miniconda 来管理 Python 环境,这样可以有效地避免 Python 包冲突的问题。安装命令如下:

conda create -n opencv python=3.8
conda activate opencv
conda install -c conda-forge opencv

 

图像读取和显示

读取和显示图像是计算机视觉处理的基础,OpenCV 提供了方便的 API 来完成这一任务。

import cv2

# 读取图像
img = cv2.imread('test.jpg')

# 显示图像
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

上述代码中,cv2.imread 用于读取图像,cv2.imshow 用于显示图像。需要注意的是,cv2.imshow 后面需要加上 cv2.waitKey(0),这是因为 OpenCV 的 GUI 窗口需要等待用户的输入才能关闭。如果不加这行代码,GUI 窗口会一闪而过。

图像操作

在 OpenCV 中,我们可以对图像进行各种各样的操作,比如缩放、旋转、裁剪等。下面是一些常用的图像操作:

import cv2

# 缩放
img = cv2.imread('test.jpg')
resized_img = cv2.resize(img, (640, 480))

# 旋转
img = cv2.imread('test.jpg')
(h, w) = img.shape[:2]
center = (w // 2, h // 2)
M = cv2.getRotationMatrix2D(center, 45, 1.0)
rotated_img = cv2.warpAffine(img, M, (w, h))

# 裁剪
img = cv2.imread('test.jpg')
cropped_img = img[100:200, 100:200]

 

上述代码中,cv2.resize 用于缩放图像,cv2.getRotationMatrix2D 和 cv2.warpAffine 用于旋转图像,img[100:200, 100:200] 用于裁剪图像。

特征提取

在计算机视觉领域中,特征提取是非常重要的一部分。OpenCV 提供了各种各样的特征提取算法,比如 SIFT、SURF、ORB 等。下面是一个使用 SIFT 算法提取图像特征的示例:

import cv2

# 提取特征
img = cv2.imread('test.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
sift = cv2.xfeatures2d.SIFT_create()
(kps, descs) = sift.detectAndCompute(gray, None)

可视化特征点

cv2.drawKeypoints(img, kps, img, color=(0, 255, 0), flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()


上述代码中,`cv2.xfeatures2d.SIFT_create` 用于创建一个 SIFT 对象,`sift.detectAndCompute` 用于提取图像的特征点和描述符,`cv2.drawKeypoints` 用于可视化特征点。需要注意的是,`cv2.drawKeypoints` 的第三个参数是输入图像,第四个参数是输出图像,所以我们在可视化特征点时需要将输入图像和输出图像设置为同一个变量。

结语

本文介绍了 Python 和 OpenCV 的基础使用,包括安装、图像读取、基本操作、特征提取等内容。当然,这只是一个入门级别的介绍,如果想深入了解 Python 和 OpenCV,还需要更多的学习和实践。

标签:img,OpenCV,Python,cv2,基础,opencv,图像,imread
From: https://www.cnblogs.com/bertin/p/17216178.html

相关文章

  • Python基础--字符串处理
    Python中,字符串变量提供了3种方法来删除字符串中多余的空格和特殊字符,它们分别是:strip():删除字符串前后(左右两侧)的空格或特殊字符。lstrip():删除字符串前面(左边)的空......
  • C++ 基础部分 个人笔记
    本人菜鸟,个人学习笔记,如有错误还请指教C++模板是什么C++模板是一种基于类型参数化的编程技术,使用模板可以使得程序员编写独立于具体数据类型的通用代码。通过参数化类......
  • Tapdata Cloud 基础课:新功能详解之「授权系统自动分析」,一键定位任务报错原因,快速获取
    【前言】作为中国的“Fivetran/Airbyte”,Tapdata是一个以低延迟数据移动为核心优势构建的现代数据平台,内置60+数据连接器,拥有稳定的实时采集和传输能力、秒级响应的......
  • python语言基础
    python语言基础1.1python语法特点1.1.1注释规则什么是注释?所谓注释,就是在代码中添加标注性的文字,进而更好的帮助我们更好的阅读代码,注释又分为单行注释和多行注释。......
  • vue经常遗忘基础知识汇总
    Vueexportdefault和export的使用方式原文链接:https://blog.csdn.net/u012887259/article/details/108119368  ......
  • linux基础day06:文件管理02
    文件管理02拷贝cp#拷贝copy#语法cp[OPTION]...[-T]SOURCEDESTcp选项源文件目标文件cp[OPTION]...SOURCE...DIREC......
  • opencv图像处理基础操作之边缘检测
    概述边缘检测是利用图像中边缘像素值会发生剧烈变化来进行检测的,主要用于分割图像、提取特征等多个方面。opencv中常用的算法有Canny边缘检测算法、Sobel算子、Laplacian算......
  • 【2023自动化测试基础知识】什么是自动化测试?
    ​大家好,我是小码哥。今天主要学习自动化测试相关概念。什么是自动化测试?自动化测试是一种软件工具的应用,用于自动化由人驱动的检查和验证软件产品的手工过程。大多数......
  • BAT 基础表签作用
     1,@在bat文件中的作用:不2,设置变量set的用法:设置变量 setn=1;设置变量n,并初始化为1;set/a:执行数学计算  set/an+=1  执行n=n+1set/p:提示用户数......
  • 后端基础——innovus每个阶段要检查的东西
    一,设计导入阶段检查时钟周期是否符合spec,检查log是否有warn和error二,floorplan阶  三,placement阶段检查setuptime,DRVs是否符合预期。在查看setuptimingreport......