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ć
- 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.
- Obraz iplImage otrzymany przez Frame.image, ma format YCrCb. Więc używając cvColor użyjemy parametru konwersji CV_YCrCb2RGB, CV_YCrCb2RGBA itd.
- 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.
- 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.
- 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.
- Wreszcie temat filtrów graficznych, po funkcje były wystarczające, aby służyć moich potrzeb:
- Smooth: cvSmooth (IplSrc, IplSrc, CV_GAUSSIAN, 9,9,2,2);
- BLur: Blur = (int) (.05 * IplSrc.szerokość()); cvSmooth (IplSrc, IplSrc, CV_BLUR, Blur);
- skali szarości: cvCvtColor
- Rocznik: cvAddS
- Smooth: cvSmooth (IplSrc, IplSrc, CV_MEDIAN, 13);
- Kontrast: cvInRangeS()
//////////// 360 –
//////////// 803 –
////// //// 1002! –