OpenCV 常用函数+ 示例图

OpenCV 常用函数+ 示例图

本文用一张示例图片演示 OpenCV 的常用处理链路:读写、颜色空间、缩放裁剪、滤波、边缘、阈值、形态学、轮廓、去噪等。
提示 :OpenCV 默认颜色通道顺序是 BGR(不是 RGB)。


0. 环境准备

bash 复制代码
pip install opencv-python numpy
# pip install opencv-contrib-python

1) 读写图像(imread / imwrite)

python 复制代码
import cv2

img = cv2.imread("your.jpg")          # BGR, uint8
gray = cv2.imread("your.jpg", 0)      # 直接读为灰度
cv2.imwrite("out.png", img)

示例:原图


2) 颜色空间转换(cvtColor)

python 复制代码
import cv2

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
rgb  = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)   # 给 matplotlib 用
hsv  = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)   # 颜色分割常用

示例:灰度图


3) 尺度变换与裁剪(resize / slicing)

3.1 Resize(缩放)

python 复制代码
resized = cv2.resize(img, (256, 256), interpolation=cv2.INTER_AREA)

3.2 Crop(裁剪)

python 复制代码
h, w = img.shape[:2]
cs = 256
y0 = (h - cs)//2
x0 = (w - cs)//2
crop = img[y0:y0+cs, x0:x0+cs]

4) 滤波(平滑/降噪的基础):Gaussian / Median / Bilateral

4.1 GaussianBlur(高斯滤波)

python 复制代码
gauss = cv2.GaussianBlur(img, (9, 9), 0)  # kernel 必须是奇数

4.2 MedianBlur(中值滤波,去椒盐噪声常用)

python 复制代码
median = cv2.medianBlur(img, 5)

4.3 BilateralFilter(双边滤波,尽量保边)

python 复制代码
bil = cv2.bilateralFilter(img, d=9, sigmaColor=60, sigmaSpace=60)

5) 边缘检测(Canny)

python 复制代码
edges = cv2.Canny(gray, 80, 160)  # 低阈值/高阈值

6) 对比度增强(CLAHE)

全局直方图均衡化有时会过度增强噪声;CLAHE(自适应均衡)更常用:

python 复制代码
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8))
eq = clahe.apply(gray)

7) 二值化(threshold / Otsu / adaptive)

7.1 Otsu 自动阈值(二类分割)

python 复制代码
_, th = cv2.threshold(eq, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)

8) 形态学(morphologyEx / erode / dilate)

典型用途:去小噪点(开运算)、填小孔洞(闭运算)。

python 复制代码
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5))
opened = cv2.morphologyEx(th, cv2.MORPH_OPEN, kernel, iterations=1)
closed = cv2.morphologyEx(opened, cv2.MORPH_CLOSE, kernel, iterations=1)

9) 轮廓提取(findContours)+ 可视化(drawContours)

python 复制代码
contours, hierarchy = cv2.findContours(closed, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
vis = img.copy()
cv2.drawContours(vis, contours, -1, (0, 255, 0), 2)

相关推荐
用户7624117567056 分钟前
第十五章 数据分析
python·数据分析
frankzch8 分钟前
Claude 刷新量子电路最优:LLM 与评估器的进化循环怎么搭
人工智能·深度学习·机器学习·语言模型·量子计算
郝学胜_神的一滴9 分钟前
游戏设计:原型与开发 05:读懂动态层,理解玩家如何活在游戏世界
人工智能·程序员
用户66982954852911 分钟前
同一句话,粤语要贵 24%:我量了 236 对双语文档和 4 种写法
人工智能
阿屿16 分钟前
从零手搓 AI 伴侣:Java + 大模型 + 多模态的工程化踩坑实录
人工智能
const_qiu17 分钟前
第四章 07:4.7 本章小结
java·运维·服务器·人工智能
拜小白20 分钟前
【论文解读】PanoSwin:为全景理解打造的“全景版“ Swin Transformer
深度学习·计算机视觉·全景图
cubestudio20 分钟前
云原生分布式训练怎么调度才不浪费算力?CubeStudio 分布式训练与加速架构解析(CRD+Operator / gang 调度 / 亲和反亲和 / GPU 利用率 / 共享 GPU)
人工智能·云原生·gpu
老马识码21 分钟前
7541 万笔,2424 万美元:x402 真正解决了什么?
人工智能
2601_9619633822 分钟前
电子合同检索与全文搜索怎么测、怎么选:六个指标 + 五家平台对比 + 八个自测问题
数据库·后端·python·django·智能合约