【问题标题】:JavaCV detect captcha letters on a binary imageJavaCV 检测二进制图像上的验证码
【发布时间】:2016-03-09 20:37:14
【问题描述】:

我是 JavaCv 的新手。我的任务是在图像上找到符号并生成带有单个符号的图片。 首先,我有这张图: 然后我做阈值并得到这个: 我正在尝试使用 cvFindContours 然后在每个符号周围画一个矩形,我的代码:

 String filename = "captcha.jpg";
    IplImage firstImage=cvLoadImage(filename);
    Mat src = imread(filename, CV_LOAD_IMAGE_GRAYSCALE);
    Mat dst = new Mat();
   threshold(src, dst, 200, 255, 0);
   imwrite("out.jpg", dst);

    IplImage iplImage=cvLoadImage("out.jpg",CV_8UC1);
    CvMemStorage memStorage=CvMemStorage.create();
    CvSeq contours=new CvSeq();
    cvFindContours(iplImage,memStorage,contours,Loader.sizeof(CvContour.class),CV_RETR_CCOMP,CV_CHAIN_APPROX_SIMPLE,cvPoint(0,0));
    CvSeq ptr;
    CvRect bb;
    for (ptr=contours;ptr!=null;ptr=ptr.h_next()){
        bb=cvBoundingRect(ptr);
        cvRectangle(firstImage , cvPoint( bb.x(), bb.y() ),
                cvPoint( bb.x() + bb.width(), bb.y() + bb.height()),
                CvScalar.BLACK, 2, 0, 0 );

    }
    cvSaveImage("result.jpg",firstImage);
}

我想得到这样的输出:,但我真的得到了这个:

请,需要你的帮助。

【问题讨论】:

  • 为什么不使用 OpenCV 2.x 或 3.0 功能?在我看来,这些 cv~~ 功能最近几乎被弃用了。

标签: java opencv captcha javacv


【解决方案1】:

您正在为 findContour() 使用“out.jpg”图像。
当您将 dst Mat 保存为“out.jpg”时,JPEG 格式会自动量化您的原始像素数据并为您的图像创建噪点。

将 dst 保存到“out.png”而不是“out.jpg”,或者直接在 findContour() 中使用 dst Mat。

添加源代码:C++ 版本

string filename = "captcha.jpg";
Mat src = imread(filename);
Mat gray;
cvtColor(src, gray, CV_BGR2GRAY);
Mat thres;
threshold(gray, thres, 200, 255, 0);

vector<vector<Point>> contours;
vector<Vec4i> hierarchy;

findContours(thres.clone(), contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE);

Mat firstImage = src.clone();
for(int i=0; i< contours.sizes(); i++)
{
    Rect r = boundingRect(contours[i]);
    rectangle(firstImage, r, CV_RGB(255, 0, 0), 2);
}

imwrite("result.png", firstImage);

【讨论】:

  • @RinatSakaev 查看我添加的代码:我用 cv::~~ features 替换了 cv~~~~~~ features。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-25
  • 2014-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多