《OpenCV图像处理》——2.5 算术运算

2.5 算术运算

算术运算是重载运算。这就意味着可以在Mat图像上执行和下面这个例子一样的运算:

在OpenCV中,一种运算的结果值受到饱和运算(saturation arithmetic)的影响。这就意味着最终的值实际上是在0~255范围内最近似的一个整数。
当用掩码进行运算时,位运算bitwise_and()、bitwise_or()、bitwise_xor()和bitwise_not()非常有用。掩码是二值图像,表示这样一些像素(而不是整幅图像)在其上仅执行一种运算。下面的bitwise_and示例向您展示如何使用AND运算剪裁一幅图像的一部分:


在读取并显示输入图像之后,通过绘制一个全白色的圆可创建一个掩码。AND运算会用到这个掩码。该逻辑运算只对掩码值非零的那些像素进行,其余像素不会受到影响。最后,在本示例中用白色填充生成图像的外部(即圆的外部)。在进行该运算时,使用了之前介绍过的一种像素访问方法。由此产生的图像见图2-2:

接下来,给出另一个很棒的示例,估计Pi的值。如图2-3所示,让我们考虑一个正方形及其内接圆:

我们假设有一个未知边长的正方形图像和一个内接圆。可以通过在图像内的随机位置绘制许多像素并计算位于内接圆中的像素个数来估计内接圆的面积。另一方面,估计正方形的面积为绘制的像素总数。这样使用上面的公式就可以估计出Pi的值。
下面的算法模拟了这个过程:
(1)在一个黑色的正方形图像上,画一个纯白色的内接圆;
(2)在另一个黑色的正方形图像上(和上面的正方形大小相同),随机绘制大量像素;
(3)在两幅图像之间进行一个AND运算,并计算所产生的图像中的非零像素个数;
(4)使用公式估计Pi。
估计Pi值示例的代码如下:


该程序完全遵循上面的算法。注意,使用函数countNonZero计算非零(在该示例中是白色)像素。对于npixels=8000,其估计值为3.125。npixels的值越大,估计结果也就越好,如图2-4所示。

时间: 2024-08-31 08:31:29

《OpenCV图像处理》——2.5 算术运算的相关文章

《OpenCV图像处理》——导读

前言 OpenCV,可以说是使用最广泛的计算机视觉库,它包括几百个易用的图像成像和视觉函数,既可用于学术研究,也可用于工业领域.随着摄像机越来越便宜和对影像学特征需求的增长,无论是对于台式机还是移动平台,OpenCV的应用范围都有了显著增长. 本书结合示例讲述OpenCV的主要图像处理算法.OpenCV方面的其他书籍试图说明其基础理论,或提供接近完整的大型应用程序示例,而本书则针对这样的读者而编写:他们想要尽量快速地得到一个易于理解的工作示例,并可能在此基础上开发一些附加功能. 本书以一个介绍性

《OpenCV图像处理》——2.8 小结

2.8 小结 本章涉及并建立了在计算机视觉中应用图像处理方法的基础.对于更深入的计算机视觉应用来说,图像处理通常是第一步,因此,本章包括:基本数据类型.像素级访问.常用的图像操作.算术运算.数据持久化和直方图.您还可以参考由Packt出版社出版的<OpenCV Essentials>中第3章对这一广泛主题的基本方面进行的更深入探讨,例如,图像增强.通过滤波进行图像修复和几何校正等.下一章将介绍图像处理方法更深入的内容,通过平滑.锐化.图像分辨率分析.形态学和几何变换.修复和去噪等方法,对图像进

OpenCV图像处理--将图像裁剪为圆形

1,需求 为了便于项目前端展示用户头像,需要将头像处理为圆形,非圆形区域设置为透明.其实,前端可以在显示的时候处理,但是前端采用WebGL,暂时搞不定,所以由后端进行图像的一次性加工. 于是,我们尝试用Linux工具Convert来完成,但是,百思无解,后续决定采用Python+OpenCV. 2,实现 优秀的代码不需要解释,直接看代码吧,O(∩_∩)O. #coding:utf8 import numpy as np import cv2 from matplotlib import pypl

《OpenCV图像处理》——1.4 使用OpenCV创建用户项目

1.4 使用OpenCV创建用户项目 本书中,我们假定C++是图像处理应用编程的主要语言,尽管实际上也提供了其他编程语言的接口和封装器(例如,Python.Java.MATLAB/Octave等). 本节说明如何用OpenCV的C++ API(一种易用的跨平台框架)开发应用.1.4.1 库的一般使用方法 为了用C++开发一个OpenCV应用,需要在代码中: 包含OpenCV的头文件定义 链接OpenCV库(二进制文件),以获取最终的可执行文件 OpenCV头文件位于OPENCV_BUILD\in

OPENCV图像处理(二):模糊

模糊是基本的图像处理方法. 在介绍这两种方法之前先来介绍两种常见的噪声: 椒盐噪声 椒盐噪声是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声.椒盐噪声分为两种即胡椒噪声和盐噪声,胡椒噪声是黑色的,属于低灰度噪声,盐噪声是白色的,属于高灰度噪声,一般两种噪声同时出现,呈现在图像上就是黑白杂点.去除椒盐噪声最常用的算法是中值滤波. 高斯噪声 高斯噪声是一种随机噪声,其幅度的统计规律服从高斯分布(正态分布),去高斯噪声最常用的算法是高斯滤波. 而这些噪声出现在图片上某一点时都是比较突兀的

OPENCV图像处理提高(二):模糊

模糊是基本的图像处理方法. 在介绍这两种方法之前先来介绍两种常见的噪声: 椒盐噪声 椒盐噪声是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声.椒盐噪声分为两种即胡椒噪声和盐噪声,胡椒噪声是黑色的,属于低灰度噪声,盐噪声是白色的,属于高灰度噪声,一般两种噪声同时出现,呈现在图像上就是黑白杂点.去除椒盐噪声最常用的算法是中值滤波. 高斯噪声 高斯噪声是一种随机噪声,其幅度的统计规律服从高斯分布(正态分布),去高斯噪声最常用的算法是高斯滤波. 而这些噪声出现在图片上某一点时都是比较突兀的

《OpenCV图像处理》——1.3 OpenCV的结构

1.3 OpenCV的结构 一旦安装了OpenCV,在OPENCV_BUILD\install目录中将加入三种类型的文件: 头文件:这些文件位于OPENCV_BUILD\install\include子目录下,用于使用OpenCV开发新项目. 库的二进制文件:这些文件是静态库或动态库(依赖于使用CMake对选项的选择),它们包含了每个OpenCV模块的功能.这些文件位于bin子目录下(例如,使用GNU编译器时,位于x64\mingw\bin). 示例二进制文件:这些文件使示例在库下可执行.这些示

《OpenCV图像处理》——第1章 处理图像文件和视频文件 1.1OpenCV介绍

第1章 处理图像文件和视频文件 本章概述OpenCV及其安装以及第一个基本程序,将介绍如下一些内容:为初学者简略介绍OpenCV,接着给出一个简单易学的库的安装步骤指南.在完成用户本地硬盘上的安装之后,快速了解一下OpenCV的结构.快速掌握使用具有某些通用编程框架的库来创建项目的方法.如何使用函数读.写图像和视频.最后,介绍如何通过库函数为软件项目添加丰富的用户界面,包括鼠标交互.基本绘图形以及Qt支持. 1.1 OpenCV介绍 OpenCV(Open Source Computer Vis

《OpenCV图像处理》——第2章 构建图像处理工具 2.1 基本数据类型

第2章 构建图像处理工具 2.1 基本数据类型 OpenCV中的基本数据类型是Mat,用来存储图像.总体上讲,一幅图像被保存为一个头加上一个包含像素数据的内存区.图像有若干个通道.灰度图像有一个通道,而彩色图像通常有红.绿和蓝三个构成成分(但是OpenCV以其逆序,即蓝.绿和红来存储这三个分量),还可以使用第四个透明度(alpha)通道.可以用img.channels()获取一幅img图像的通道数.使用若干个位来存储一幅图像的每个像素,这被称为图像深度(image depth).对于灰度图像,像