1

JavaCVを使用して駐車場を認識しようとしています

私はこのような画像を持っています(角度付き):

元の画像

そして、ソフトウェアが場所を認識して目立たせ、次のように座標を取得できるようにしたいと思います (Photoshop が悪くてすみません)。

出力画像

今までの私のコード:

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);

出力画像はどうすればよいですか?誰でも知っていますか?ありがとう。

4

1 に答える 1

1

ガボール フィルタを適用すると、次のようになります。

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

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

ガウスの代わりに、さまざまな角度を適用して、応答の大きさから最適な結果を見つけることができます。したがって、最良の結果が得られるガボール フィルターの角度が必要です。この角度を使用して長方形を描くことができます。駐車場のコーナー ポイントを見つけるには、基本的な "Connected Component Labelling" メソッドを適用できます。

システムがリアルタイムで、応答時間が重要な場合。「キャニー」などのエッジ検出方法のいずれかを適用して、画像の勾配を見つける必要があります。

于 2013-05-21T05:21:24.767 に答える