opencv - 如何使用 OpenCV/JavaCV 识别 parking 场?

标签 opencv image-recognition javacv parking

我正在尝试使用 JavaCV 识别 parking 场

我有一张这样的图片(带角度):

Original Image

而且我希望软件能够识别位置并突出显示,获取坐标,就像这样(对不起,不好的 photoshop):

Output Image

到目前为止我的代码:

imgOriginal = cvLoadImage("D:\\imagem\\original2.JPG");

imgModify = cvCreateImage(cvGetSize(imgOriginal), IPL_DEPTH_8U, 1);
imgOut = cvCloneImage(imgOriginal);

cvSmooth(imgOut, imgOut, CV_GAUSSIAN, 3);
    cvCvtColor(imgOut, imgModify, CV_BGR2GRAY);
    cvThreshold(imgModify, imgModify, 0, 255, CV_THRESH_BINARY + CV_THRESH_OTSU);
    cvErode(imgModify, imgModify, null, 1);

    CvMemStorage storage = cvCreateMemStorage(0);
    CvSeq cvSeq = cvCreateSeq(0, Loader.sizeof(CvContour.class), Loader.sizeof(CvSeq.class), storage);
    cvFindContours(imgModificada, storage, cvSeq, Loader.sizeof(CvContour.class), CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE);

    int objects = 0;
    CvRect region;
    for (; cvSeq != null; cvSeq = cvSeq.h_next()) {
        double areaObject = Math.abs(cvContourArea(cvSeq, CV_WHOLE_SEQ, 0));
        if (areaObject > 500) { //ignore small contours
            objects++;

            region = cvBoundingRect(cvSeq, 0);
            cvRectangle(imgOut, cvPoint(region.x(), region.y()), cvPoint(region.x() + region.width(), region.y() + region.height()), CvScalar.BLUE, 1, CV_AA, 0);


        }
    }
System.out.println(objects);
cvShowImage("Out", imgOut);
cvWaitKey(0);
cvReleaseImage(imgOut);

如何输出图像?有谁知道?谢谢。

最佳答案

如果你应用 Gabor 过滤器:

http://en.wikipedia.org/wiki/Gabor_filter

http://mplab.ucsd.edu/tutorials/gabor.pdf

代替高斯分布,您可以应用不同的角度并根据响应幅度找到最佳匹配结果。所以,给你最好的结果的 gabor 过滤器的角度就是你所需要的。您可以使用此角度绘制矩形。为了找到 parking 场的角点,您可以应用基本的“连通分量标记”方法。

如果您的系统是实时的并且响应时间对您很重要。您需要通过应用“Canny”等边缘检测方法之一来找到图像的梯度

关于opencv - 如何使用 OpenCV/JavaCV 识别 parking 场?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16659608/

相关文章:

java - 如何使用 Tesseract 提高 OCR 质量?

c++ - 需要推荐使用opencv或任何其他库的良好图像相似度匹配算法

opencv - 如何调整现有的情绪检测模型以检测自定义情绪?

java - OpenCV 图像采集卡输出图像不正确

math - 如何在不丢失边缘的情况下旋转图像

python-3.x - 特征匹配+单应性

c++ - 我怎样才能找到最大的四边形

c++ - OpenCV 中用于图像处理的局部敏感哈希

algorithm - 识别规则网格中的扭曲

java - 如何在 javacv 中识别和填充 I 形轮廓?