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

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

1. 读取和显示图像

import cv2

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

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

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

2. 保存图像

import cv2

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

# 保存图像
cv2.imwrite('output_image.jpg', image)

3. 获取图像属性

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. 转换颜色空间

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. 绘制基本图形

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. 图像缩放

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. 图像旋转

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. 图像平移

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. 图像边缘检测

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. 图像滤波

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被大家说的神乎其神,但仔细看来是一堆接口方法,难点可能在于怎么去实际应用,但它本身是不难的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

flos chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值