OpenCV图像处理入门实战指南

本文将通过一系列代码实例,帮你快速掌握OpenCV的核心功能。


一、环境准备

import cv2
import numpy as np
  • cv2:OpenCV核心库
  • numpy:用于处理图像矩阵运算

二、图像基础操作

1. 图像读取与显示

# 读取彩色图像(默认BGR格式)
img = cv2.imread('aigc.png')

# 创建窗口并调整大小
cv2.namedWindow('Image Display', cv2.WINDOW_NORMAL)
cv2.resizeWindow('Image Display', 800, 400)

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

# 等待按键触发(2000ms后自动关闭)
cv2.waitKey(2000)
cv2.destroyAllWindows()

2. 图像属性获取

print("图像尺寸:", img.shape)   # (height, width, channels)
print("数据类型:", img.dtype)   # uint8(0-255)
print("像素总数:", img.size)    # height*width*channels

三、进阶图像处理

1. 灰度转换

gray_img = cv2.imread('aigc.png', cv2.IMREAD_GRAYSCALE)
cv2.imwrite('aigc_gray.jpg', gray_img)  # 直接保存灰度图

2. 区域裁剪

# 定义感兴趣区域(ROI)
cropped = img[30:230, 100:300]

# 可视化对比
cv2.imshow('Original', img)
cv2.imshow('Cropped', cropped)
cv2.waitKey(0)

3. 视频处理实战

cap = cv2.VideoCapture('video1.mp4')

while cap.isOpened():
    ret, frame = cap.read()
    
    if not ret:
        break
    
    # 实时灰度转换
    gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    
    cv2.imshow('Video Player', gray_frame)
    
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

四、高级操作技巧

1. 通道操作

b, g, r = cv2.split(img)  # 分离通道
merged = cv2.merge([b, g, r])  # 合并通道

# 单独显示蓝色通道
cv2.imshow('Blue Channel', b)
cv2.waitKey(0)

2. 图像打码处理

# 在指定区域生成随机噪声
h, w, _ = img.shape
mask = np.random.randint(0, 256, (100, 100, 3), dtype=np.uint8)
img[200:300, 200:300] = mask

cv2.imshow('Redacted Image', img)
cv2.waitKey(0)

3. 尺寸调整

resized = cv2.resize(img, None, fx=0.5, fy=0.5)  # 等比例缩放
# 或指定具体尺寸:
# resized = cv2.resize(img, (800, 600))

五、完整代码示例

import cv2
import numpy as np

def main():
    # 图像处理流程
    img = cv2.imread('aigc.png')
    
    # 显示原图
    cv2.imshow('Original', img)
    
    # 转换为灰度图
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    cv2.imshow('Grayscale', gray)
    
    # ROI裁剪
    roi = img[100:300, 200:400]
    cv2.imshow('ROI', roi)
    
    # 图像打码
    img[50:150, 50:150] = np.random.randint(0, 256, (100, 100, 3))
    cv2.imshow('Redacted', img)
    
    # 尺寸调整
    resized = cv2.resize(img, (640, 480))
    cv2.imshow('Resized', resized)
    
    cv2.waitKey(0)
    cv2.destroyAllWindows()

if __name__ == "__main__":
    main()

六、关键知识点总结

功能模块核心函数参数说明
图像读取cv2.imread()第二个参数控制色彩模式
图像显示cv2.imshow()需配合cv2.waitKey()使用
图像保存cv2.imwrite()支持多种格式(jpg/png等)
键盘事件cv2.waitKey()返回按键ASCII码
资源释放cv2.destroyAllWindows()关闭所有窗口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值