opencv
文章平均质量分 73
yolo_guo
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
opencv 学习: 12 使用策略模式进行实现算法切换-以颜色搜索为例
摘要: 本文介绍了策略设计模式在图像处理中的应用。策略模式通过将算法封装到独立类中,实现运行时灵活切换不同算法。文章详细阐述了策略模式的适用场景(算法变体切换、行为差异分离、算法与业务解耦)和实现方法(抽象策略接口+具体算法类)。通过一个颜色检测算法的具体案例,展示了如何将图像处理算法封装为策略类,包括核心的process()方法和参数设置接口。代码示例演示了使用策略模式处理彩色图像,通过欧几里德距离计算颜色匹配度,并输出二值化结果。该模式使算法更易于测试、维护和重用。原创 2025-12-17 20:13:40 · 812 阅读 · 0 评论 -
opencv 学习: 11 图片像素位置变换,以图片加水波纹特效为例
摘要 本文介绍了通过像素重映射实现图像特效的方法。该方法保持像素值不变,仅改变像素位置,适用于创建哈哈镜等简单特效或图像畸变矫正。实现过程包括:1)定义重映射矩阵存储新坐标;2)通过双重循环计算每个像素的位移位置;3)使用OpenCV的remap函数应用映射。示例代码展示了波浪效果实现,其中Y坐标按正弦函数周期性偏移。该方法采用向后映射技术,通过x和y两个浮点型映射矩阵完成图像变换。执行结果显示,原始图像成功转换为具有波浪形变的效果图。原创 2025-12-01 20:09:56 · 309 阅读 · 0 评论 -
opencv 学习: 10 图像的简单运算(2)
本文介绍了OpenCV中的图像操作符重载和通道处理技术。操作符重载部分包括比特位运算、比较操作符和矩阵计算,如矩阵相乘、转置、叉乘等,可简化图像处理代码实现。通道分离与合并部分详细讲解了cv::split和cv::merge方法的使用,通过分离图像通道单独处理后再合并,实现高效的通道级操作。示例代码展示了如何通过调整蓝色通道值来改变图像色调,并解释了防蓝光效果的实现原理。这些技术为图像处理提供了灵活高效的操作方式。原创 2025-11-27 15:39:26 · 426 阅读 · 0 评论 -
opencv 学习: 10 图像的简单运算
摘要:本文介绍了如何将图片视为矩阵进行四则运算,重点演示了OpenCV中的加法运算。通过cv::add和cv::addWeighted方法可实现图片叠加,后者支持权重参数调节。文章还展示了使用掩码(mask)进行局部区域运算的技巧,以及不同运算方式的视觉效果对比。此外,简要提及了OpenCV提供的其他运算方法,如subtract、absdiff、multiply等矩阵运算函数。所有运算都默认使用cv::saturate_cast确保像素值合法,并支持直接将输入图片作为输出参数以优化内存使用。原创 2025-11-25 20:13:46 · 711 阅读 · 0 评论 -
opencv 学习: QA_02 什么是图像中的高频成分和低频成分
本文介绍了数字图像处理中的频率成分概念。高频成分指像素值急剧变化的部分,包含边缘、细节和噪声;低频成分则是变化缓慢的区域,对应平滑背景和大色块。通过傅里叶变换可将图像转换到频域,低频集中在频谱中心,高频分布在外围。文章还列举了实际应用,如锐化处理(减去低频)、边缘检测(高通滤波)等。理解频率成分有助于图像增强、去噪等处理,是图像分析的重要基础。原创 2025-11-14 14:52:45 · 912 阅读 · 0 评论 -
opencv 学习: QA_01 什么是图像锐化
图像锐化技术通过增强边缘和细节提升图像清晰度,主要使用特定的卷积核(如3×3矩阵)强调像素差异。OpenCV中可通过filter2D函数或手动遍历像素实现。锐化能改善边缘对比度,突出细节,但过度使用会增加噪声。该技术广泛应用于照片处理、医学影像、工业检测等领域,需根据具体需求调整参数以获得最佳效果。原创 2025-11-14 14:49:42 · 459 阅读 · 0 评论 -
opencv 学习: 09 邻近像素处理,以高通滤波图片锐化为例
本文介绍了图像锐化处理的基本原理和实现方法。图像锐化通过增加边缘对比度使图像更清晰,使用拉普拉斯算子(5倍中心像素减去四邻域像素)计算新像素值。文中提供了两种C++实现:v1版本使用直观但效率较低的at方法,v2版本采用指针操作提高效率,并处理了数据溢出问题。代码演示了如何跳过边缘像素并进行锐化计算,最终输出视觉上更清晰的图像。执行效果显示锐化后图像细节更突出,纹理更明显。原创 2025-11-14 14:24:19 · 277 阅读 · 0 评论 -
opencv 学习: 08 计算代码执行耗时
本文介绍了在图像处理中比较不同遍历方式效率的方法。可以通过OpenCV的cv::getTickCount()和cv::getTickFrequency()函数来测量代码执行时间,或者使用C++11的chrono库进行更精确的计时。文中提供了多种遍历图像像素的实现方式,包括指针遍历、at方法、迭代器和reshape方法,并比较了它们的性能差异。其中指针遍历通常效率最高,而at方法由于随机访问特性较慢。最后给出了一个保持原图不变的优化实现,演示了如何在处理图像时避免不必要的内存分配。这些方法可以帮助开发者找到性原创 2025-11-13 15:46:25 · 224 阅读 · 0 评论 -
opencv 学习: 07 使用迭代器 (iterator) 遍历像素
本文介绍了使用迭代器遍历OpenCV图像像素的方法。首先解释了迭代器在面向对象编程中的概念和作用,然后详细说明了OpenCV提供的cv::MatIterator_模板类的使用方法。文章给出了两种迭代器声明方式,并展示了一个完整的颜色量化处理示例代码。该代码通过迭代器遍历图像所有像素,对每个颜色通道进行均匀量化处理,最后保存输出图像。实现的关键点包括迭代器的声明、开始/结束位置的获取以及像素访问语法。示例程序可以通过命令行参数指定输入图像、量化级别和输出路径,并显示处理前后的图像对比。原创 2025-11-11 17:20:28 · 465 阅读 · 0 评论 -
opencv 学习: 06 使用指针遍历像素,以均匀颜色量化为例
本文介绍了图像处理中的均匀颜色量化方法,通过划分RGB空间为大小相等的立方体来减少颜色数量。主要实现方式包括:1)将像素通道值除以缩小倍数后取商并调整;2)使用取模运算;3)利用位运算(限制缩小倍数为2的n次幂时)。文章提供了OpenCV的C++实现代码,并比较了不同缩小倍数下的效果。均匀颜色量化虽实现简单、效率高,但可能导致重要颜色丢失和色带现象。该方法适用于降低图像处理复杂度,文中还涉及了图像存储格式、有效宽度等扩展知识。原创 2025-11-10 19:49:41 · 528 阅读 · 0 评论 -
opencv 学习: 05 像素操作
本文介绍了图像处理中基本的像素操作技术。首先解释了灰度图和彩色图的像素表示方法:灰度图每个像素是0-255的数值,彩色图则包含RGB三个通道。文章重点讲解了如何使用OpenCV的cv::Mat类高效访问和修改像素值,包括使用at()方法和cv::Mat_模板类的简化操作。通过实现椒盐噪声的示例代码,展示了如何随机选择像素并修改其值为纯白或纯黑。还讨论了图像参数传递的注意事项,即使用引用计数机制实现高效传递。最后给出了完整的C++代码实现,展示了如何为图像添加指定密度的椒盐噪声。原创 2025-11-07 18:01:45 · 991 阅读 · 0 评论 -
opencv 学习: 02 初识图片处理
本文介绍了OpenCV图像处理的基本流程和简单操作。主要内容包括: 图片处理三步骤:读取图片(imread)、处理图片(flip等操作)、输出图片(imwrite) 图片显示与窗口事件处理:使用imshow显示图片,并通过setMouseCallback设置鼠标事件回调函数 简单图形绘制:演示了putText、circle、rectangle、line等基本绘图函数的使用 示例代码展示了完整的图片处理流程,包括读取图片、显示窗口、添加鼠标交互、图像翻转处理、结果显示和保存等功能,为OpenCV初学者提供了一原创 2025-10-30 18:50:13 · 177 阅读 · 0 评论 -
opencv 学习: 04 通过ROI处理图片局部数据,以添加水印为例
本文介绍了如何在OpenCV中定义和操作图像的感兴趣区域(ROI)。主要演示了两种定义ROI的方法:1)使用cv::Rect指定矩形区域的位置和大小;2)使用cv::Range选择行和列范围。通过在目标图像上创建ROI映射(cv::Mat对象),可以对指定区域进行修改而不影响其他部分。文中提供了完整代码示例,展示了如何将logo图像复制到目标图像的右下角ROI区域,并保存结果。该方法适用于图像处理中需要局部操作的应用场景。原创 2025-10-31 20:38:26 · 316 阅读 · 0 评论 -
opencv 学习: 03 初识 cv:Mat
OpenCV中的cv::Mat数据结构是图像处理的核心,它表示一个像素矩阵,包含了图像的所有信息。Mat对象分为属性部分(如尺寸、通道数)和数据块(像素数据本身)。该数据结构采用引用计数机制管理内存,通过显式调用copyTo()或clone()实现深拷贝,而默认赋值操作仅进行浅拷贝。本文通过代码示例展示了Mat的基本操作:读取图像、灰度转换、数据类型转换、图像创建和拷贝等,重点阐述了Mat的内存管理机制及其对图像处理效率的影响。掌握Mat数据结构特性是进行高效图像处理编程的关键。原创 2025-10-31 18:04:40 · 615 阅读 · 0 评论 -
opencv 学习: 01 ubuntu20.04 下 opencv 4.12.0 源码编译
本文介绍了在Ubuntu 20.04系统下搭建OpenCV 4.12.0开发环境的过程。首先安装必要的编译工具(cmake、g++、unzip)和依赖库(libgtk2.0-dev),解决cv::imshow显示图片时的窗口支持问题。然后下载OpenCV源码并通过CMake配置编译环境,采用默认的Release构建类型,无需额外配置其他图片依赖库。编译过程详细记录了各种编译器测试结果,包括C/C++编译器特性检测和使用不同警告选项的测试情况。该环境可用于后续图像处理程序的开发工作。原创 2025-10-30 18:01:23 · 678 阅读 · 0 评论
分享