首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【OpenCV 常用功能汇总】不要因为被神化而不敢触碰

【OpenCV 常用功能汇总】不要因为被神化而不敢触碰

作者头像
flos chen
发布2026-01-23 15:24:00
发布2026-01-23 15:24:00
530
举报

OpenCV(Open Source Computer Vision Library)是一个强大的计算机视觉库,广泛应用于图像处理、视频分析、特征检测、机器学习等领域。以下是一些基本的 OpenCV 操作及其 Python 代码示例:

1. 读取和显示图像
代码语言:javascript
复制
import cv2

# 读取图像
image = cv2.imread('path_to_image.jpg')

# 显示图像
cv2.imshow('Image', image)

# 等待按键后关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()
2. 保存图像
代码语言:javascript
复制
import cv2

# 读取图像
image = cv2.imread('path_to_image.jpg')

# 保存图像
cv2.imwrite('output_image.jpg', image)
3. 获取图像属性
代码语言:javascript
复制
import cv2

# 读取图像
image = cv2.imread('path_to_image.jpg')

# 获取图像属性
height, width, channels = image.shape

print(f'Width: {width} pixels')
print(f'Height: {height} pixels')
print(f'Channels: {channels}')
4. 转换颜色空间
代码语言:javascript
复制
import cv2

# 读取图像
image = cv2.imread('path_to_image.jpg')

# 转换到灰度图像
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 转换到HSV颜色空间
hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)

# 显示图像
cv2.imshow('Original Image', image)
cv2.imshow('Gray Image', gray_image)
cv2.imshow('HSV Image', hsv_image)

# 等待按键后关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()
5. 绘制基本图形
代码语言:javascript
复制
import cv2
import numpy as np

# 创建一个空白图像
image = np.zeros((512, 512, 3), np.uint8)

# 绘制一条线
cv2.line(image, (0, 0), (511, 511), (255, 0, 0), 5)

# 绘制一个矩形
cv2.rectangle(image, (384, 0), (510, 128), (0, 255, 0), 3)

# 绘制一个圆形
cv2.circle(image, (447, 63), 63, (0, 0, 255), -1)

# 绘制一个多边形
pts = np.array([[100, 50], [200, 300], [700, 200], [400, 100]], np.int32)
pts = pts.reshape((-1, 1, 2))
cv2.polylines(image, [pts], True, (0, 255, 255), 3)

# 绘制文本
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(image, 'OpenCV', (10, 500), font, 4, (255, 255, 255), 2, cv2.LINE_AA)

# 显示图像
cv2.imshow('Image', image)

# 等待按键后关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()
6. 图像缩放
代码语言:javascript
复制
import cv2

# 读取图像
image = cv2.imread('path_to_image.jpg')

# 缩放图像
resized_image = cv2.resize(image, (200, 200))

# 显示图像
cv2.imshow('Original Image', image)
cv2.imshow('Resized Image', resized_image)

# 等待按键后关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()
7. 图像旋转
代码语言:javascript
复制
import cv2
import numpy as np

# 读取图像
image = cv2.imread('path_to_image.jpg')

# 获取图像中心
height, width = image.shape[:2]
center = (width // 2, height // 2)

# 计算旋转矩阵
angle = 45  # 旋转角度
scale = 1.0  # 缩放比例
M = cv2.getRotationMatrix2D(center, angle, scale)

# 旋转图像
rotated_image = cv2.warpAffine(image, M, (width, height))

# 显示图像
cv2.imshow('Original Image', image)
cv2.imshow('Rotated Image', rotated_image)

# 等待按键后关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()
8. 图像平移
代码语言:javascript
复制
import cv2
import numpy as np

# 读取图像
image = cv2.imread('path_to_image.jpg')

# 定义平移矩阵
tx = 100  # x方向平移
ty = 50   # y方向平移
M = np.float32([[1, 0, tx], [0, 1, ty]])

# 平移图像
translated_image = cv2.warpAffine(image, M, (image.shape[1], image.shape[0]))

# 显示图像
cv2.imshow('Original Image', image)
cv2.imshow('Translated Image', translated_image)

# 等待按键后关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()
9. 图像边缘检测
代码语言:javascript
复制
import cv2
import numpy as np

# 读取图像
image = cv2.imread('path_to_image.jpg')

# 转换到灰度图像
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 使用Canny算法检测边缘
edges = cv2.Canny(gray_image, 100, 200)

# 显示图像
cv2.imshow('Original Image', image)
cv2.imshow('Edges', edges)

# 等待按键后关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()
10. 图像滤波
代码语言:javascript
复制
import cv2
import numpy as np

# 读取图像
image = cv2.imread('path_to_image.jpg')

# 使用高斯滤波
blurred_image = cv2.GaussianBlur(image, (5, 5), 0)

# 使用中值滤波
median_blurred_image = cv2.medianBlur(image, 5)

# 显示图像
cv2.imshow('Original Image', image)
cv2.imshow('Gaussian Blurred Image', blurred_image)
cv2.imshow('Median Blurred Image', median_blurred_image)

# 等待按键后关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()

这些基本操作涵盖了图像读取、显示、保存、颜色空间转换、绘制图形、图像变换(缩放、旋转、平移)和滤波等常用功能。

说实话,OpenCV被大家说的神乎其神,但仔细看来是一堆接口方法,难点可能在于怎么去实际应用,但它本身是不难的。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-02-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 读取和显示图像
  • 2. 保存图像
  • 3. 获取图像属性
  • 4. 转换颜色空间
  • 5. 绘制基本图形
  • 6. 图像缩放
  • 7. 图像旋转
  • 8. 图像平移
  • 9. 图像边缘检测
  • 10. 图像滤波
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档