zoukankan      html  css  js  c++  java
  • 一个有趣问题的分析--寻找并且增强印章

    1、先验知识:
    “印章”有两个明显特点:红的,圆的。这都有可能是准确识别、进而增强的依据。因为我们要识别的图片,印章不是很清楚,所以其圆的特性有可能不成立,所以我主要通过颜色来分析。
    2、具体实现:
    2.1 依据红色的区域
    通过域的转换,首先找到“红色”区域:
        Mat src = imread("e:/template/stamp.png");
        Mat tempMat temp1Mat temp2Mat temp3;
        vector<Matplanes;
        cvtColor(srcsrcCOLOR_BGR2HSV);
        split(srcplanes);
        //equalizeHist(planes[2], planes[2]);//对v通道进行equalizeHist
        merge(planestemp);
        //cvtColor(temp, src, COLOR_HSV2BGR);
        inRange(tempScalar(0, 43, 46), Scalar(10, 255, 255), temp1);
        inRange(tempScalar(156, 43, 46), Scalar(180, 255, 255), temp2);
        temp3 = temp1 + temp2;
        dilate(temp3temp3Mat());
        erode(temp3temp3Mat());
    后续还可以进一步通过轮廓分析、联通区域分析的思路,将这些噪音去掉。由于这里只有一副图片,我就不过分优化。
    2.2 但是这里也有一种直接通过颜色变换的方法,得出的效果也非常不错:
    2.3 依据S 区域的筛选
        Mat src = imread("e:/template/stamp.png");
        Mat red(src.size(), CV_8UC3Scalar(0,0,255));
        Mat tempMat temp1Mat temp2Mat temp3;
        vector<Matplanes;
        cvtColor(srctempCOLOR_BGR2HSV);
        inRange(tempScalar(0, 43, 46), Scalar(10, 255, 255), temp1);
        //copyTo(red, src, temp1);
        split(tempplanes);
        Mat s = planes[1];
        cv::threshold(ss, 50, 255, THRESH_OTSU);
        copyTo(redsrcs);
        waitKey(0);
        return(0);
        inRange(srcScalar(0, 0, 180), Scalar(170, 170, 255), temp1);
    3、增强结论:
    一个最简单的方法,就是将这些区域全部设定为红色。结果是有一点过强了,但是思路应该是可行的。







  • 相关阅读:
    Asp.net HttpContext 简介
    cxf 调用 .net webservice
    Dapper.Rainbow 简单使用
    Aspose.words 书签定位
    修改WCF的默认序列化格式
    mysql8.0.18忘记密码后重置密码
    聊一聊c#中的MATH.ROUND方法
    Windows上安装MySql
    win7搭建本地SonarQube环境进行c#代码分析
    使用dapper遇到的问题及解决方法
  • 原文地址:https://www.cnblogs.com/jsxyhelu/p/13257736.html
Copyright © 2011-2022 走看看