Python OpenCV 实现图像与视频马赛克处理详解

桃夭
桃夭
发布时间:2026-10-13| 7人浏览过
原创

本文介绍如何使用 Python 和 OpenCV 库实现图像及视频的马赛克效果。核心原理是将指定区域内的像素替换为左上角像素颜色,通过循环遍历邻域块完成模糊处理。文章提供了完整的 Python 代码示例,包含参数说明、边界检查及防溢出处理,适用于图像静态处理与视频逐帧处理场景。

Python OpenCV 马赛克效果实现概述

本文通过具体示例展示如何利用 Python 结合 OpenCV 库实现马赛克效果,内容供开发者参考与学习。

近期有需求在视频处理中应用 OpenCV 实现马赛克功能,网络上相关 C++ 实现较多。鉴于核心原理相通,此处提供对应的 Python 实现方案。

代码中的关键逻辑与注意事项已详细注释,请结合注释理解实现细节。

马赛克算法原理与代码实现


import cv2
##马赛克
def do_mosaic(frame, x, y, w, h, neighbor=9):
  """
  马赛克的实现原理是把图像上某个像素点一定范围邻域内的所有点用邻域内左上像素点的颜色代替,这样可以模糊细节,但是可以保留大体的轮廓。
  :param frame: opencv frame
  :param int x : 马赛克左顶点
  :param int y: 马赛克右顶点
  :param int w: 马赛克宽
  :param int h: 马赛克高
  :param int neighbor: 马赛克每一块的宽
  """
  fh, fw = frame.shape[0], frame.shape[1]
  if (y + h > fh) or (x + w > fw):
    return
  for i in range(0, h - neighbor, neighbor): # 关键点0 减去neightbour 防止溢出
    for j in range(0, w - neighbor, neighbor):
      rect = [j + x, i + y, neighbor, neighbor]
      color = frame[i + y][j + x].tolist() # 关键点1 tolist
      left_up = (rect[0], rect[1])
      right_down = (rect[0] + neighbor - 1, rect[1] + neighbor - 1) # 关键点2 减去一个像素
      cv2.rectangle(frame, left_up, right_down, color, -1)
im = cv2.imread('test.jpg', 1)
do_mosaic(im, 219, 61, 460 - 219, 412 - 61)

while 1:
  k = cv2.waitKey(10)
  if k == 27:
    break
  cv2.imshow('mosaic', im)

处理前的原始图像如下:

应用马赛克效果后的结果如下:

文中使用的图片来源于互联网,若涉及版权问题,请联系删除。

如需了解更多 Python 相关技术,可参考本站专题:《Python 图片操作技巧总结》、《Python 数据结构与算法教程》、《Python Socket 编程技巧总结》、《Python 函数使用技巧总结》、《Python 字符串操作技巧汇总》、《Python 入门与进阶经典教程》及《Python 文件与目录操作技巧汇总》。

希望本示例对从事 Python 程序设计的读者有所帮助。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。