2014-04-24 15 views
5

Zamierzam zastosować filtry (Skala szarości, Vintage, Kontrast, Wyostrzenie, Rozmycie, Wygładzenie itp.) Do iplImage JavaCv. W ten sposób natknąłem się na te funkcje/klasy: iplImage, CvMat, cvInRangeS, cvCvtColor, cvSmooth. Chciałbym wyjaśnić te kwestie. Oto moje konkretne pytania:Filtrowanie obrazu/manipulowanie przy użyciu JavaCv (Java wrapper dla OpenCV) w systemie Android

  1. iplImage cvMatrix Bitmap Konwersja
  2. Format iplImage za HSV/RGB/BGR ..... ARGB/XYZ/Bayer/LUV w odniesieniu do cvCvtColor
  3. cvSmooth różne formy
  4. cvInRange Demonstracja
  5. cvMat Wykorzystanie
  6. mogę budować moje filtry z nich wszystko
+0

//////////// 360 –

+0

//////////// 803 –

+0

////// //// 1002! –

Odpowiedz

2

Chciałbym podzielić się wiedzą zdobytą podczas korzystania z JavaCv do filtrowania obrazu i wideo. Udało mi się rozwinąć moje filtry (Skala szarości, Vintage, Kontrast, Sharpen, Blur & Smooth) przy użyciu JavaCv. Mogłabym łatwo zrobić filtrowanie obrazu za pomocą Bitmap Manipulation, ale był zbyt wolny, aby mógł być użyty do filtrowania wideo.

Są kilka kluczowych punktów, które Pragnę podkreślić

  1. FFmpegFrameGrabber daje nam ramka obiektu. Ten obiekt składa się z dwóch części: iplImage i Sound. Frame.image daje iplImage i jeśli Frame.image == null, to jest dźwięk. W rzeczywistości obiekt Frame zawiera tylko iplImage lub dźwięk w konkretnym wystąpieniu czasu.
  2. Obraz iplImage otrzymany przez Frame.image, ma format YCrCb. Więc używając cvColor użyjemy parametru konwersji CV_YCrCb2RGB, CV_YCrCb2RGBA itd.
  3. Mówiąc o FFmpegFrameRecorder, można łatwo zarejestrować iplImage przy użyciu tej klasy i wygenerować wideo wywołujące recorder.record (Ipl_Image). Możesz użyć frameGrabber.getImageWidth(), frameGrabber.getImageHeight(), frameGrabber.getAudioChannels() jako parametrów konstruktora FFmpegFrameRecorder, jeśli chcesz użyć FrameGrabber i FrameRecorder jako implementacji Feedback.
  4. Aby nagrać dźwięk z FrameGrabbera, należy sprawdzić parametr Frame.image w każdej iteracji. Jeśli nie jest to wartość null, zapisz element iplImage lub jeśli jest pusty, zarejestruj ramkę. Spowoduje to dodanie zarówno nagrania, jak i iplImage do nagranego pliku.
  5. Obraz iplImage i bitmap można łatwo konwertować za pomocą funkcji writeToBuffer i coppyFromBuffer. Należy jednak pamiętać, że mapa bitowa ma z nią 4 kanały, więc obiekt iplImage powinien również być 4-kanałowy.
  6. Wreszcie temat filtrów graficznych, po funkcje były wystarczające, aby służyć moich potrzeb:
    1. Smooth: cvSmooth (IplSrc, IplSrc, CV_GAUSSIAN, 9,9,2,2);
    2. BLur: Blur = (int) (.05 * IplSrc.szerokość()); cvSmooth (IplSrc, IplSrc, CV_BLUR, Blur);
    3. skali szarości: cvCvtColor
    4. Rocznik: cvAddS
    5. Smooth: cvSmooth (IplSrc, IplSrc, CV_MEDIAN, 13);
    6. Kontrast: cvInRangeS()
Powiązane problemy