OpenCV3.2.0
帅气的猫爪
这个作者很懒,什么都没留下…
展开
-
Java+opencv3.2.0之人脸检测
说到人脸检测,首先要了解Haar特征分类器。Haar特征分类器说白了就是一个个的xml文件,不同的xml里面描述人体各个部位的特征值,比如人脸、眼睛等等。OpenCV3.2.0中提供了如下特征文件:haarcascade_eye.xmlhaarcascade_eye_tree_eyeglasses.xmlhaarcascade_frontalcatface.xmlhaarcascade_fro原创 2017-10-10 14:25:52 · 6566 阅读 · 8 评论 -
Java+opencv3.2.0之膨胀与腐蚀
腐蚀与膨胀是最基本的形态学操作,它们能够实现多种多样的功能,主要如下: 1) 消除噪声 2) 分割出独立的图像元素,在图像中连接相邻的元素 3) 寻找图像中的明显的极大值区域或极小值区域 4) 求出图像的梯度膨胀是求局部最大值的操作。本质上就是将图像A与核B进行卷积。 腐蚀和膨胀相反,是求局部最小值。它也是需要图像A与核B进行卷积。 Opencv3.2.0实现膨胀的函数:Imgp原创 2017-08-03 18:00:15 · 7144 阅读 · 1 评论 -
Java+opencv3.2.0之中值滤波
中值滤波器是一种非线性的滤波技术,它将每一像素点的值设置为该点邻域窗口内所有像素点灰度值得中值。它能有效的消除椒盐噪声(椒盐噪声是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声)。 如图为椒盐噪声: 例子:public static void main(String[] args) { System.loadLibrary(Core.NATIVE_LIBRARY_NAME)原创 2017-08-01 16:15:19 · 1743 阅读 · 0 评论 -
Java+opencv3.2.0之均值滤波
均值滤波主要是利用某像素点周边的像素的平均值来达到平滑噪声的目的。它是一种典型的线性滤波算法。均值滤波本身存在着缺陷,它不能很好的保护图像的细节,在去噪的同时会破坏图像的细节部分,不能很好的去除噪点。 均值滤波常用的内核如图: Opencv3.2.0中实现均值滤波的方法:Imgproc.blur(Mat src, Mat dst, Size ksize, Point anchor, int原创 2017-08-01 15:19:34 · 1912 阅读 · 2 评论 -
Java+opencv3.2.0之高斯滤波
高斯滤波器是利用高斯核的一个二维的卷积算子,用于图像模糊去噪。它也是一种线性滤波器,其模板系数会随着距离模板中心越远而越小。高斯滤波的结果和高斯分布的标准差σ有关,σ越大,平滑效果越好。高斯滤波的具体操作是:用一个模板扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均值去替代模板中心像素点的值。 如图为高斯滤波器σ为0.8的高斯内核模板: Opencv3.2.0中提供了实现高斯滤波的方原创 2017-08-01 15:43:57 · 2996 阅读 · 0 评论 -
Java+opencv3.2.0之灰度化
图片灰度处理即是把彩色图片转为灰度图片,目的是为了加快图片处理速度。24位彩色图像每个像素用3个字节表示,每个字节对应着RGB分量的亮度。当RGB分量值不同时,为彩色图像;当RGB分量相同时,为灰度图像。 Opencv3.2.0中提供了图像彩色空间转换方法:Imgproc.cvtColor(Mat src, Mat dst, int code, int dstCn) 参数说明: src原创 2017-08-01 08:56:10 · 3153 阅读 · 0 评论 -
Java+opencv3.2.0之环境配置
1、 在eclipse中添加opencv库 步骤: 1) 安装opencv库,这里用的是opencv-3.2.0-vc14.exe,双击安装 2) Eclipse中Window–> Preferences–> Java–> Build Path–> User Libraries,点击New… 3)输入Userlibrary name,例opencv_java320,这里因为我之前建原创 2017-07-31 19:12:30 · 9787 阅读 · 10 评论 -
Java+opencv3.2.0之二值化
原理:简单来说是指将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果。 Opencv3.2.0中提供了两种方法实现图像二值化:(1) Imgproc.threshold(Mat src, Matdst, double thresh, double maxval, int type)参数说明: src:输入源图像 dst:输出目标原创 2017-07-28 11:35:12 · 3715 阅读 · 0 评论 -
Java+opencv3.2.0之模板匹配
模板匹配是一项在一幅图像中寻找与另一幅模板图像最匹配(相似)部分的技术。函数:Imgproc.matchTemplate(Mat image, Mat templ, Mat result, int method) 参数说明: image:源图像 templ:模板图像 result:比较结果 method:匹配算法匹配算法: TM_SQDIFF 平方差匹配法:该方法采用平方差来进行匹配;最原创 2017-11-20 16:14:30 · 4273 阅读 · 4 评论 -
Java+opencv3.2.0之删除最小连通区域
吐槽一下,在网上查了半天opencv3关于删除最小连通区域的方法,结果还是没找到,就自己写了一个,效果还可以,就发出来和大家分享一下。思路: 1、遍历所有像素点 2、每遍历到一个黑点就去判断是否为连通区域起始点,若是则添加到待检测像素点集合中 3、遍历待检测像素点集合,检测待检测像素点周围(上下左右)的像素点,若是黑点,则添加到待检测像素点集合中,并把当前待检测像素点添加到已检测点集合。若待检原创 2017-08-09 13:13:44 · 1396 阅读 · 0 评论 -
Java+opencv3.2.0之图像尺寸调整
尺寸调整顾名思义就是用来调整源图像或者ROI区域的大小。Opencv3.2.0中提供了函数模型: Imgproc.resize(Mat src, Mat dst, Size dsize, double fx, double fy, int interpolation) 参数说明: src:源图像 dst:输出图像 dsize:输出图像的大小。如果它为0,则计算dsize=new Size(原创 2017-08-10 18:13:29 · 6664 阅读 · 1 评论 -
Java+opencv3.2.0之hough直线检测
hough变换是图像处理中的一种特征提取技术,该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合特定形状的集合作为hough变换结果。 发展史: 1962年由PaulHough首次提出,用来检测直线和曲线。 1972年由Richard Duda & Peter Hart推广使用,扩展到任意形状物体的识别。原理: 一条直线在直角坐标系下的表示形式为y=k*x+b,而在极坐标系下表示原创 2017-08-17 16:00:33 · 3648 阅读 · 3 评论 -
Java+opencv3.2.0之hough圆检测
hough圆检测和hough线检测的原理近似,对于圆来说,在参数坐标系中表示为C:(x,y,r)。函数: Imgproc.HoughCircles(Mat image, Mat circles, int method, double dp, double minDist, double param1, double param2, int minRadius, int maxRadius)原创 2017-08-25 16:15:03 · 2058 阅读 · 1 评论 -
Java+opencv3.2.0之重映射
通过重映射来表达每个像素的位置(x,y) :g(x,y)=f(h(x,y)),h(x,y)是映射方法函数。当h(x,y) = (I.cols()-x,y),表示按照x轴方向发生偏转。函数: Imgproc.remap(Mat src, Mat dst, Mat map1, Mat map2, int interpolation, int borderMode, Scalar borderV原创 2017-08-19 17:01:08 · 646 阅读 · 0 评论 -
Java+opencv3.2.0之scharr滤波器
在opencv中scharr滤波器是配合sobel算子的运算而存在的。当sobel内核为3时,结果可能会产生比较明显的误差,针对这一问题,Opencv提供了scharr函数。该函数只针对大小为3的核,并且运算速率和sobel函数一样快,结果更加精确,但抗噪性不如sobel函数。 使用scharr滤波器计算x或y方向的图像差分,它的参数变量和sobel一样。函数: Imgproc.Schar原创 2017-08-19 14:30:30 · 558 阅读 · 0 评论 -
Java+opencv3.2.0之Laplacian算子
拉普拉斯算子是n维欧几里德空间中的一个二阶微分算子,定义为梯度(▽f)的散度(▽·f)。因此如果f是二阶可微的实函数,则f的拉普拉斯算子定义为: f的拉普拉斯算子也是笛卡儿坐标系中的所有非混合二阶偏导数: 作为一个二阶微分算子,拉普拉斯算子把C函数映射到C函数,对于k ≥ 2。表达式(1)(或(2))定义了一个算子Δ : C(R) → C(R),或更一般地,定义了一个算子Δ : C(Ω) → C原创 2017-08-19 13:52:56 · 1859 阅读 · 1 评论 -
Java+opencv3.2.0之sobel算子
sobel算子主要是应用于边缘检测的一个离散的一阶差分算子,用来计算图像亮度函数的一阶梯度的近似值。 sobel算子的计算过程: 假设作用图像为I, (1)分别求得在x和y方向的导数 水平变化:将I与一个奇数大小的内核Gx卷积 垂直变化:将I与一个奇数大小的内核Gy卷积 (2)在图像的每一点,求出近似梯度函数: Imgproc.Sobel(Mat src, Mat dst, in原创 2017-08-19 13:25:59 · 1934 阅读 · 1 评论 -
Java+opencv3.2.0之canny算子
Canny边缘检测算子是John F.Canny于1986年开发出来的一个多级边缘检测算法。 Canny边缘检测的步骤: (1)消除噪声,一般使用高斯平滑滤波器卷积降噪 (2)计算梯度幅值和方向,此处按照sobel滤波器步骤来操作 (3)非极大值抑制,排除非边缘像素 (4)滞后阈值(高阈值和低阈值),若某一像素位置的幅值超过高阈值,该像素被保留为边缘像素;若小于低阈值,则被排除;若在两者之原创 2017-08-19 10:35:51 · 2993 阅读 · 3 评论 -
Java+opencv3.2.0之直方图均衡
直方图均衡化是通过拉伸像素强度分布范围来增强图像对比度的一种方法。 直方图均衡化的步骤: 1、计算输入图像的直方图H 2、进行直方图归一化,使直方图组距的和为255 3、计算直方图积分 4、采用H’作为查询表:dst(x,y)=H’(src(x,y))进行图像变换函数:Imgproc.equalizeHist(Mat src, Mat dst) 参数说明: src:源图像 dst:运原创 2017-08-18 14:14:52 · 982 阅读 · 2 评论 -
Java+opencv3.2.0之仿射变换
仿射变换是指在几何中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间的过程。 我们通常使用2x3的矩阵来表示仿射变换。 我们一般使用getRotationMatrix2D来获取旋转矩阵。 函数: Imgproc.getRotationMatrix2D(Point center, double angle, double scale) 参数说明: cente原创 2017-08-17 17:50:10 · 1912 阅读 · 2 评论 -
Java+opencv3.2.0之轮廓检测
轮廓是由一系列的点组成的集合,表现在图像中就是一条曲线。 OpenCV3.2.0中提供了查找轮廓的方法: Imgproc.findContours(Mat image, List contours, Mat hierarchy, int mode, int method, Point offset)参数说明: image:8位单通道图像。 contours:存储检测到的轮廓的集合。 ...原创 2018-04-19 15:31:31 · 6394 阅读 · 0 评论