关于 JAVA 学习 OpenCV 的内容,函数讲解,案例代码内容我均整理在 GitHub【OpenCV3-Study-JAVA 】上
下面代码中所需的项目结构,图片,请访问 GitHub 获取。
代码展示
package opencv;
import opencv.base.OpenCVStudyBase;
import org.junit.Test;
import org.opencv.core.*;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import java.util.ArrayList;
import java.util.List;
/**
* @Author : alexliu
* @Description : 主要学习
* 1. 图像腐蚀
* 2. 图像膨胀
* 3. 查找条形码案例
*/
public class StudyTest_8 extends OpenCVStudyBase{
/*
* 腐蚀,膨胀都属于形态学滤波。
*
* 数学形态学中,基本的运算有:
* 二值腐蚀和膨胀
* 二值开闭运算
* 骨架抽取
* 极限腐蚀
* 灰值腐蚀和膨胀
* 灰值开闭运算
* 灰值形态学梯度
* .....
*
*
* 腐蚀,膨胀的主要功能如下:
* 1. 消除噪声
* 2. 分割(isolate)出独立的图像元素,在图像中连接(join)相邻的元素
* 3. 寻找图像中的明显的极大值区域或极小值区域
* 4. 求出图像的梯度
*
* 注意:
* 腐蚀和膨胀仅针对`图像高亮`区域进行操作。
*
*/
private String save_dir = "study-output/study-opencv-8";
/*
* 如何创建腐蚀、膨胀操作的核
*
* 腐蚀和膨胀均有一个 Mat kernel 参数。这个参数就是腐蚀/膨胀操作的核,它是一个矩阵结构元素(Mat)
* OpenCV 在 Imgproc 包中,提供了 getStructuringElement 的函数,来方便创建腐蚀/膨胀的核
*
* getStructuringElement 原型方法:
* getStructuringElement(int shape, Size ksize, Point anchor)
* getStructuringElement(int shape, Size ksize)
*
* 参数:
* shape : Integer 核的结构类型
* -- C++ 有四种(多一个用户自定义),其他语言3种
* -- MORPH_RECT , 一个矩形结构元素
* -- MORPH_ELLIPSE , 一个椭圆结构元素
* -- MORPH_CROSS , 一个十字形结构元素
* ksize : Size 结构元素的大小
* anchor : Point 元素中瞄点的位置。默认值 (-1,-1)表示在元素的中心位置。注意:只有十字形结构元素依赖瞄点,其他形状类型仅仅影响结果的偏移。
*
* 原文:
* shape – Element shape that could be one of the following:
* MORPH_RECT - a rectangular structuring element
* MORPH_ELLIPSE - an elliptic structuring element, that is, a filled ellipse inscribed into the rectangle Rect(0, 0, esize.width, 0.esize.height)
* MORPH_CROSS - a cross-shaped structuring element
* CV_SHAPE_CUSTOM - custom structuring element (OpenCV 1.x API)
* ksize – Size of the structuring element.
* anchor – Anchor position within the element. The default value (-1, -1) means that the anchor is at the center.
* Note that only the shape of a cross-shaped element depends on the anchor position.
* In other cases the anchor just regulates how much the result of the morphological operation is shifted.
*/
/*
* ------------------------------------------------------------------------------------------------------------
*
* 腐蚀
*
* 1. 腐蚀说明:
* 图像的一部分区域与指定的核进行卷积,求核的最`小`值并赋值给指定区域。
* 腐蚀可以理解为图像中`高亮区域`的'领域缩小'。
* 意思是高亮部分会被不是高亮部分的像素侵蚀掉,使高亮部分越来越少。
*
* 2. 腐蚀函数(erode)
* erode 有3个原型方法
*
* erode(Mat src, Mat dst, Mat kernel, Point anchor, int iterations, in