From 9983f3ce7d5644cc0d1aa1c706a0d61445a135c7 Mon Sep 17 00:00:00 2001 From: songer Date: Thu, 26 Jul 2018 15:43:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=BC=AB=E6=B0=B4=E5=A1=AB?= =?UTF-8?q?=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../opencv/base/BaseMethodController.java | 156 +++++++++++- .../acts/opencv/base/CardPlusController.java | 3 +- .../acts/opencv/common/mapper/BeanMapper.java | 1 + .../acts/opencv/common/mapper/JaxbMapper.java | 1 + .../acts/opencv/common/mapper/JsonMapper.java | 3 +- .../common/mapper/adapters/MapAdapter.java | 3 + .../common/mapper/adapters/MapConvertor.java | 5 +- .../acts/opencv/common/utils/Reflections.java | 19 +- src/main/webapp/index.jsp | 3 +- .../webapp/statics/sourceimage/floodfill.png | Bin 0 -> 54990 bytes .../webapp/statics/sourceimage/floodfill3.png | Bin 0 -> 9415 bytes .../webapp/statics/sourceimage/match3.jpg | Bin 0 -> 8074 bytes src/main/webapp/view/base/findtemplate.jsp | 4 +- src/main/webapp/view/base/floodfill.jsp | 227 ++++++++++++++++++ 14 files changed, 408 insertions(+), 17 deletions(-) create mode 100644 src/main/webapp/statics/sourceimage/floodfill.png create mode 100644 src/main/webapp/statics/sourceimage/floodfill3.png create mode 100644 src/main/webapp/statics/sourceimage/match3.jpg create mode 100644 src/main/webapp/view/base/floodfill.jsp diff --git a/src/main/java/com/acts/opencv/base/BaseMethodController.java b/src/main/java/com/acts/opencv/base/BaseMethodController.java index 205091e..86f2234 100644 --- a/src/main/java/com/acts/opencv/base/BaseMethodController.java +++ b/src/main/java/com/acts/opencv/base/BaseMethodController.java @@ -348,6 +348,43 @@ public class BaseMethodController extends BaseController { } } + /** + * 漫水填充 + * @Author 王嵩 + * @param response + * @param imagefile + * @param ksize + * @param alpha + * @param beta + * @param gamma void + * @Date 2018年5月24日 + * 更新日志 + * 2018年5月24日 王嵩 首次创建 + * + */ + @RequestMapping(value = "floodfill") + public void floodfill(HttpServletResponse response, String imagefile, double graysize, double lodiff, + double updiff, int flag) { + System.loadLibrary(Core.NATIVE_LIBRARY_NAME); + logger.info("\n 锐化操作"); + + String sourcePath = Constants.PATH + imagefile; + logger.info("url==============" + sourcePath); + Mat source = Highgui.imread(sourcePath, Highgui.CV_LOAD_IMAGE_GRAYSCALE); + // Mat mask = new Mat(source.rows() + 2, source.cols() + 2, source.type()); + Mat mask = new Mat(); + Rect rect = new Rect(); + Imgproc.floodFill(source, mask, new Point(0, 0), new Scalar(graysize), rect, new Scalar(lodiff), new Scalar( + updiff), flag); + + try { + byte[] imgebyte = OpenCVUtil.covertMat2Byte1(source); + renderImage(response, imgebyte); + } catch (IOException e) { + e.printStackTrace(); + } + } + /** * 图片缩放方法测试 * 创建者 Songer @@ -733,7 +770,7 @@ public class BaseMethodController extends BaseController { logger.info("轮廓数量已经超出,默认显示所有轮廓,轮廓数量:{}", contours.size()); contourNum = -1; } - Imgproc.drawContours(destination, contours, contourNum, new Scalar(0, 255, 0), 2); + Imgproc.drawContours(destination, contours, contourNum, new Scalar(0, 255, 0), 1); try { byte[] imgebyte = OpenCVUtil.covertMat2Byte1(destination); renderImage(response, imgebyte); @@ -894,4 +931,121 @@ public class BaseMethodController extends BaseController { } } + + // public void qrCode(HttpServletResponse response, String imagefile, Integer binaryType, Double thresh, Double maxval) { + // System.loadLibrary(Core.NATIVE_LIBRARY_NAME); + // String sourcePath = Constants.PATH + imagefile; + // // 加载为灰度图显示 + // Mat imageGray = Highgui.imread(sourcePath, Highgui.CV_LOAD_IMAGE_GRAYSCALE); + // Mat image = new Mat(imageGray.rows(), imageGray.cols(), imageGray.type()); + // Mat imageGuussian = new Mat(imageGray.rows(), imageGray.cols(), imageGray.type()); + // Mat imageSobelX,imageSobelY,imageSobelOut; + // imageGray.copyTo(image); + // + // // imshow("Source Image",image); + // + // GaussianBlur(imageGray,imageGuussian,Size(3,3),0); + // Imgproc.GaussianBlur(imageGray, imageGuussian,new Size(5, 5), + // Integer.valueOf(sigmaX), Integer.valueOf(sigmaY)); + // + // //水平和垂直方向灰度图像的梯度和,使用Sobel算子 + // Mat imageX16S,imageY16S; + // Sobel(imageGuussian,imageX16S,CV_16S,1,0,3,1,0,4); + // Sobel(imageGuussian,imageY16S,CV_16S,0,1,3,1,0,4); + // convertScaleAbs(imageX16S,imageSobelX,1,0); + // convertScaleAbs(imageY16S,imageSobelY,1,0); + // imageSobelOut=imageSobelX+imageSobelY; + // imshow("XY方向梯度和",imageSobelOut); + // Mat srcImg =imageSobelOut; + // //宽高扩充,非必须,特定的宽高可以提高傅里叶运算效率 + // Mat padded; + // int opWidth = getOptimalDFTSize(srcImg.rows); + // int opHeight = getOptimalDFTSize(srcImg.cols); + // copyMakeBorder(srcImg, padded, 0, opWidth-srcImg.rows, 0, opHeight-srcImg.cols, BORDER_CONSTANT, Scalar::all(0)); + // Mat planes[] = {Mat_(padded), Mat::zeros(padded.size(), CV_32F)}; + // Mat comImg; + // //通道融合,融合成一个2通道的图像 + // merge(planes,2,comImg); + // dft(comImg, comImg); + // split(comImg, planes); + // magnitude(planes[0], planes[1], planes[0]); + // Mat magMat = planes[0]; + // magMat += Scalar::all(1); + // log(magMat, magMat); //对数变换,方便显示 + // magMat = magMat(Rect(0, 0, magMat.cols & -2, magMat.rows & -2)); + // //以下把傅里叶频谱图的四个角落移动到图像中心 + // int cx = magMat.cols/2; + // int cy = magMat.rows/2; + // Mat q0(magMat, Rect(0, 0, cx, cy)); + // Mat q1(magMat, Rect(0, cy, cx, cy)); + // Mat q2(magMat, Rect(cx, cy, cx, cy)); + // Mat q3(magMat, Rect(cx, 0, cx, cy)); + // Mat tmp; + // q0.copyTo(tmp); + // q2.copyTo(q0); + // tmp.copyTo(q2); + // q1.copyTo(tmp); + // q3.copyTo(q1); + // tmp.copyTo(q3); + // normalize(magMat, magMat, 0, 1, CV_MINMAX); + // Mat magImg(magMat.size(), CV_8UC1); + // magMat.convertTo(magImg,CV_8UC1,255,0); + // imshow("傅里叶频谱", magImg); + // //HoughLines查找傅里叶频谱的直线,该直线跟原图的一维码方向相互垂直 + // threshold(magImg,magImg,180,255,CV_THRESH_BINARY); + // imshow("二值化", magImg); + // vector lines; + // float pi180 = (float)CV_PI/180; + // Mat linImg(magImg.size(),CV_8UC3); + // HoughLines(magImg,lines,1,pi180,100,0,0); + // int numLines = lines.size(); + // float theta; + // for(int l=0; lget_type_name()<get_data()< images = new ArrayList<>(); + List images = new ArrayList(); images.add(img); MatOfInt channels = new MatOfInt(0); // 图像通道数,0表示只有一个通道 MatOfInt histSize = new MatOfInt(256); // CV_8U类型的图片范围是0~255,共有256个灰度级 diff --git a/src/main/java/com/acts/opencv/common/mapper/BeanMapper.java b/src/main/java/com/acts/opencv/common/mapper/BeanMapper.java index 71e2683..ee6a53c 100644 --- a/src/main/java/com/acts/opencv/common/mapper/BeanMapper.java +++ b/src/main/java/com/acts/opencv/common/mapper/BeanMapper.java @@ -12,6 +12,7 @@ import com.google.common.collect.Lists; * 2. 返回值类型转换. * 3. 批量转换Collection中的所有对象. * 4. 区分创建新的B对象与将对象A值复制到已存在的B对象两种函数. + * 创建者 张志朋 * 创建时间 2017年9月28日 */ public class BeanMapper { diff --git a/src/main/java/com/acts/opencv/common/mapper/JaxbMapper.java b/src/main/java/com/acts/opencv/common/mapper/JaxbMapper.java index 72e55a3..72792d6 100644 --- a/src/main/java/com/acts/opencv/common/mapper/JaxbMapper.java +++ b/src/main/java/com/acts/opencv/common/mapper/JaxbMapper.java @@ -25,6 +25,7 @@ import com.acts.opencv.common.utils.Reflections; * 使用Jaxb2.0实现XML<->Java Object的Mapper. * 在创建时需要设定所有需要序列化的Root对象的Class. * 特别支持Root对象是Collection的情形. + * 创建者 张志朋 * 创建时间 2017年9月28日 * */ diff --git a/src/main/java/com/acts/opencv/common/mapper/JsonMapper.java b/src/main/java/com/acts/opencv/common/mapper/JsonMapper.java index 1d0463d..24447ec 100644 --- a/src/main/java/com/acts/opencv/common/mapper/JsonMapper.java +++ b/src/main/java/com/acts/opencv/common/mapper/JsonMapper.java @@ -15,8 +15,8 @@ import org.slf4j.LoggerFactory; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.core.JsonParser.Feature; import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.JsonParser.Feature; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.JsonSerializer; @@ -29,6 +29,7 @@ import com.fasterxml.jackson.module.jaxb.JaxbAnnotationModule; /** * 简单封装Jackson,实现JSON String<->Java Object的Mapper. 封装不同的输出风格, * 使用不同的builder函数创建实例. + * 创建者 张志朋 * 创建时间 2017年9月28日 * */ diff --git a/src/main/java/com/acts/opencv/common/mapper/adapters/MapAdapter.java b/src/main/java/com/acts/opencv/common/mapper/adapters/MapAdapter.java index 4a79cb0..bc23be0 100644 --- a/src/main/java/com/acts/opencv/common/mapper/adapters/MapAdapter.java +++ b/src/main/java/com/acts/opencv/common/mapper/adapters/MapAdapter.java @@ -1,3 +1,6 @@ +/** + * Copyright © 2016-2020 公众学业 All rights reserved. + */ package com.acts.opencv.common.mapper.adapters; import java.util.HashMap; diff --git a/src/main/java/com/acts/opencv/common/mapper/adapters/MapConvertor.java b/src/main/java/com/acts/opencv/common/mapper/adapters/MapConvertor.java index 470611d..e867a73 100644 --- a/src/main/java/com/acts/opencv/common/mapper/adapters/MapConvertor.java +++ b/src/main/java/com/acts/opencv/common/mapper/adapters/MapConvertor.java @@ -1,3 +1,6 @@ +/** + * Copyright © 2016-2020 公众学业 All rights reserved. + */ package com.acts.opencv.common.mapper.adapters; import java.util.ArrayList; @@ -12,7 +15,7 @@ import javax.xml.bind.annotation.XmlType; @XmlAccessorType(XmlAccessType.FIELD) public class MapConvertor { - private final List entries = new ArrayList(); + private List entries = new ArrayList(); public void addEntry(MapEntry entry) { entries.add(entry); diff --git a/src/main/java/com/acts/opencv/common/utils/Reflections.java b/src/main/java/com/acts/opencv/common/utils/Reflections.java index f7e015d..bba3a46 100644 --- a/src/main/java/com/acts/opencv/common/utils/Reflections.java +++ b/src/main/java/com/acts/opencv/common/utils/Reflections.java @@ -11,23 +11,22 @@ import org.apache.commons.lang3.Validate; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.util.Assert; - /** * 反射工具类. * 提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class, 被AOP过的真实类等工具函数. - * 创建者 Songer + * 创建者 张志朋 * 创建时间 2016年8月1日 * */ @SuppressWarnings("rawtypes") public class Reflections { - + private static final String SETTER_PREFIX = "set"; private static final String GETTER_PREFIX = "get"; private static final String CGLIB_CLASS_SEPARATOR = "$$"; - + private static Logger logger = LoggerFactory.getLogger(Reflections.class); /** @@ -136,7 +135,7 @@ public class Reflections { /** * 循环向上转型, 获取对象的DeclaredField, 并强制设置为可访问. - * + * * 如向上转型到Object仍无法找到, 返回null. */ public static Field getAccessibleField(final Object obj, final String fieldName) { @@ -159,7 +158,7 @@ public class Reflections { * 循环向上转型, 获取对象的DeclaredMethod,并强制设置为可访问. * 如向上转型到Object仍无法找到, 返回null. * 匹配函数名+参数类型。 - * + * * 用于方法需要被多次调用的情况. 先使用本函数先取得Method,然后调用Method.invoke(Object obj, Object... args) */ public static Method getAccessibleMethod(final Object obj, final String methodName, @@ -184,7 +183,7 @@ public class Reflections { * 循环向上转型, 获取对象的DeclaredMethod,并强制设置为可访问. * 如向上转型到Object仍无法找到, 返回null. * 只匹配函数名。 - * + * * 用于方法需要被多次调用的情况. 先使用本函数先取得Method,然后调用Method.invoke(Object obj, Object... args) */ public static Method getAccessibleMethodByName(final Object obj, final String methodName) { @@ -240,7 +239,7 @@ public class Reflections { /** * 通过反射, 获得Class定义中声明的父类的泛型参数的类型. * 如无法找到, 返回Object.class. - * + * * 如public UserDao extends HibernateDao * * @param clazz clazz The class to introspect @@ -270,7 +269,7 @@ public class Reflections { return (Class) params[index]; } - + public static Class getUserClass(Object instance) { Assert.notNull(instance, "Instance must not be null"); Class clazz = instance.getClass(); @@ -283,7 +282,7 @@ public class Reflections { return clazz; } - + /** * 将反射时的checked exception转换为unchecked exception. */ diff --git a/src/main/webapp/index.jsp b/src/main/webapp/index.jsp index 826f9e4..1242043 100644 --- a/src/main/webapp/index.jsp +++ b/src/main/webapp/index.jsp @@ -130,6 +130,7 @@ desired effect
  • zxing识别二维码
  • 模糊
  • 图像锐化
  • +
  • 漫水填充
  • 缩放
  • 腐蚀膨胀
  • 腐蚀膨胀进阶
  • @@ -156,7 +157,7 @@ desired effect
  • 页码识别
  • 图像矫正
  • - +
  • 校正真实测试
  • diff --git a/src/main/webapp/statics/sourceimage/floodfill.png b/src/main/webapp/statics/sourceimage/floodfill.png new file mode 100644 index 0000000000000000000000000000000000000000..4542bf2640bdeaa3484a234b00329f236a3290ed GIT binary patch literal 54990 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 F^B+yw4Nm|7 literal 0 HcmV?d00001 diff --git a/src/main/webapp/view/base/findtemplate.jsp b/src/main/webapp/view/base/findtemplate.jsp index c4dba10..60e675a 100644 --- a/src/main/webapp/view/base/findtemplate.jsp +++ b/src/main/webapp/view/base/findtemplate.jsp @@ -81,7 +81,7 @@ console.log("init",[xsize,ysize]); $("#oldimg").Jcrop({ - maxSize:[100,62], + maxSize:[100,100], onChange: updatePreview, onSelect: updatePreview, aspectRatio: xsize / ysize @@ -163,7 +163,7 @@ /* width: 250px; height: 170px; */ width: 100px; - height: 62px; + height: 100px; overflow: hidden; } diff --git a/src/main/webapp/view/base/floodfill.jsp b/src/main/webapp/view/base/floodfill.jsp new file mode 100644 index 0000000..e2e08dd --- /dev/null +++ b/src/main/webapp/view/base/floodfill.jsp @@ -0,0 +1,227 @@ +<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> +<%@include file="/module/include/common.jsp"%> + + + + + + + + + +

    + + +

      漫水填充测试

    +
    + + + + + + + + + + + + + + + +
    灰度值lodiffupdiffflag操作
    + + + + + + + + 漫水填充 + 重置
    + + + + +
    +
    +
    +
    +

    原图

    + +
    +
    +

    未识别前的原文件。

    + 原图 +
    +
    +
    +
    +
    +
    +

    识别后的图片

    + +
    +
    +

    点击识别按钮后,将显示识别后的文件。

    + 识别后的图 + +
    +
    +
    +
    + + + + +
    + +
    + +
    +
    +

    参考资料:
    + Opencv官方文档:addweighted
    +
    锐化:dst (I)= saturate ( src1(I)* lodiff + src2(I)* updiff + flag ) + public static void addWeighted(Mat src1, double lodiff, Mat src2, double updiff, double flag, Mat dst); 各参数说明:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    #参数说明
    1.Mat src1图层1对应的Mat对象
    2.double lodiff图层1的透明度权重
    3.Mat src2图层2对应的Mat对象
    4.double updiff图层2的透明度权重
    5.double flag一个加到权重总和上的标量值,越大合并图像越明亮
    6.Mat dst目标图像mat
    + + +
    +
    +
    +