网站首页 > 博客文章 正文
OpenCV(Open Source Computer Vision Library)是一个开源计算机视觉和机器学习软件库。它提供了大量的图像和视频处理功能,可以用于各种应用场景,比如人脸识别、物体检测、图像分割等。下面是一个关于如何使用 OpenCV 进行基本图像处理的教程。
安装 OpenCV
首先,你需要安装 OpenCV。如果你还没有安装,可以通过 pip 安装 OpenCV 的 Python 接口:
Bash
深色版本
1pip install opencv-python
为了能够使用一些额外的功能,比如图形用户界面,你可能还需要安装 opencv-python-headless 或者 opencv-contrib-python:
Bash
深色版本
1pip install opencv-python-headless
2pip install opencv-contrib-python
基础图像操作
读取图像
Python
深色版本
1import cv2
2
3# 读取图像
4image = cv2.imread('path/to/your/image.jpg')
5
6# 显示图像
7cv2.imshow('Image', image)
8cv2.waitKey(0) # 等待按键事件,0 表示无限等待
9cv2.destroyAllWindows()
10
11# 保存图像
12cv2.imwrite('output_image.jpg', image)
图像属性
Python
深色版本
1# 获取图像尺寸 (高度, 宽度, 通道数)
2height, width, channels = image.shape
3print(f"Image size: {width}x{height} ({channels} channels)")
4
5# 获取像素值
6pixel_value = image[100, 100] # 获取 (100, 100) 位置的像素值
7print(f"Pixel value at (100, 100): {pixel_value}")
图像裁剪与缩放
Python
深色版本
1# 裁剪图像
2cropped_image = image[50:200, 100:300]
3
4# 缩放图像
5resized_image = cv2.resize(image, (640, 480)) # 将图像调整为 640x480 大小
高级图像处理
灰度转换
Python
深色版本
1gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
2cv2.imshow('Gray Image', gray_image)
3cv2.waitKey(0)
4cv2.destroyAllWindows()
边缘检测
Python
深色版本
1edges = cv2.Canny(gray_image, threshold1=50, threshold2=150)
2cv2.imshow('Edges', edges)
3cv2.waitKey(0)
4cv2.destroyAllWindows()
形态学操作
Python
深色版本
1kernel = np.ones((5, 5), np.uint8)
2
3# 腐蚀
4erosion = cv2.erode(edges, kernel, iterations=1)
5
6# 膨胀
7dilation = cv2.dilate(edges, kernel, iterations=1)
8
9# 开运算
10opening = cv2.morphologyEx(edges, cv2.MORPH_OPEN, kernel)
11
12# 闭运算
13closing = cv2.morphologyEx(edges, cv2.MORPH_CLOSE, kernel)
图像轮廓检测
Python
深色版本
1# 查找轮廓
2contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
3
4# 绘制轮廓
5cv2.drawContours(image, contours, -1, (0, 255, 0), 2)
6cv2.imshow('Contours', image)
7cv2.waitKey(0)
8cv2.destroyAllWindows()
完整示例
将上述代码片段组合成一个完整的程序:
Python
深色版本
1import cv2
2import numpy as np
3
4# 读取图像
5image = cv2.imread('path/to/your/image.jpg')
6
7# 显示原始图像
8cv2.imshow('Original Image', image)
9
10# 转换为灰度图像
11gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
12cv2.imshow('Gray Image', gray_image)
13
14# 边缘检测
15edges = cv2.Canny(gray_image, threshold1=50, threshold2=150)
16cv2.imshow('Edges', edges)
17
18# 形态学操作
19kernel = np.ones((5, 5), np.uint8)
20opening = cv2.morphologyEx(edges, cv2.MORPH_OPEN, kernel)
21cv2.imshow('Opening', opening)
22
23# 轮廓检测
24contours, _ = cv2.findContours(opening, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
25cv2.drawContours(image, contours, -1, (0, 255, 0), 2)
26cv2.imshow('Contours', image)
27
28cv2.waitKey(0)
29cv2.destroyAllWindows()
注意事项
- 在显示图像时,确保你的程序在适当的位置调用了 cv2.waitKey() 和 cv2.destroyAllWindows(),这样可以正确地管理窗口。
- OpenCV 使用 BGR 色彩空间而不是 RGB。
- 使用适当的阈值和参数来适应不同的图像和需求。
这些基本操作是使用 OpenCV 进行图像处理的良好起点。你可以在此基础上探索更多高级功能,例如特征检测、模板匹配、颜色空间转换等。
猜你喜欢
- 2024-10-02 OpenCV(10)——几何变换之缩放(opencv图像几何变换)
- 2024-10-02 OpenCV:图像旋转与缩放(opencv mat旋转)
- 2024-10-02 讲实话,我会Python之后!我都不屑用PS了!Python抠图太方便了!
- 2024-10-02 [OpenCV实战]51 基于OpenCV实现图像极坐标变换与逆变换
- 2024-10-02 使用opencv实现深度学习的图片与视频的超分辨率
- 2024-10-02 人脸检测-opencv(人脸检测识别)
- 2024-10-02 使用OpenCV和python自动捕捉微笑的自拍(Python完整实现)
- 2024-10-02 如何用Python和OpenCV进行图像识别,实战教程
- 2024-10-02 基于OpenCV对神经网络预处理人脸图像的快速指南
- 2024-10-02 Java,OpenCV,分割图像,提取图像RGB、图像放大缩小、图像裁剪
你 发表评论:
欢迎- 最近发表
-
- 印度IT咨询公司Infosys 获得谷歌5亿美元大单
- 印度信息技术巨头Infosys对地球观测初创公司GalaxEye进行战略投资
- 你没见过的分库分表原理解析和解决方案(二)
- 安装MySQL(绿联nas安装mysql)
- SpringBoot数据库管理 - 用Liquibase对数据库管理和迁移?
- 一个轻量级 Java 权限认证框架,Sa-Token 让鉴权变得简单、优雅!
- 高效使用Java构建工具,Maven篇|云效工程师指北
- Java,screw,生成简洁好用的数据库表结构(html、doc、md)文档
- SpringBoot数据库操作的应用(springboot如何操作数据库)
- Mac Docker环境,利用Canal实现MySQL同步ES
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- googlecloud (64)
- flutterrun (59)
- 系统设计图 (58)
- powershellfor (73)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- qcombobox样式表 (68)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)