2014-04-24 13 views
5

Ich möchte Filter (Graustufen, Vintage, Kontrast, Schärfen, Weichzeichnen, Glätten usw.) auf iplImage des JavaCv anwenden. Dabei bin ich auf diese Funktionen/Klassen gestoßen: iplImage, CvMat, cvInRangeS, cvCvtColor, cvSmooth. Ich möchte eine Klarstellung dazu suchen. Im Folgenden sind meine spezifischen Fragen:Image Filtering/Manipulation Mit JavaCv (Java Wrapper für OpenCV) in Android

  1. IplImage cvMatrix Bitmap-Umwandlung
  2. IplImage des Format HSV/RGB/BGR ..... ARGB/XYZ/Bayer/LUV in Bezug auf cvCvtColor
  3. cvSmooth verschiedenen Formen
  4. cvInRange Demonstration
  5. cvMat Usage
  6. Kann ich bauen meine Filter mit all diesen
+0

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

+0

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

+0

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

Antwort

2

Ich möchte das Wissen teilen, das ich während der Verwendung von JavaCv für die Bild- und Videofilterung erworben habe. Ich bin erfolgreich bei der Entwicklung meiner Filter (Graustufen, Vintage, Kontrast, Schärfe, Unschärfe & Glatt) mit JavaCv. Ich könnte leicht Bildfilterung mit Bitmap-Manipulation durchführen, aber es war zu langsam, um für die Videofilterung verwendet zu werden.

Dies sind einige der wichtigsten Punkte, die ich

  1. FFmpegFrameGrabber gibt uns ein Frame-Objekt hervorheben möchten. Dieses Objekt besteht aus zwei Teilen: Das iplImage und der Sound. Frame.image gibt das iplImage und wenn Frame.image == null, dann ist es der Sound. Tatsächlich enthält das Frame-Objekt nur iplImage oder den Sound zu einer bestimmten Zeit.
  2. Das von Frame.image empfangene iplImage hat das YCrCb-Format. Mit cvColor würde also der Konvertierungsparameter CV_YCrCb2RGB, CV_YCrCb2RGBA usw. verwendet werden.
  3. Wenn wir nun über FFmpegFrameRecorder sprechen, kann man einfach ein iplImage mit dieser Klasse aufzeichnen und das Video erzeugen, das den recorder.record (Ipl_Image) aufruft. Sie können frameGrabber.getImageWidth(), frameGrabber.getImageHeight(), frameGrabber.getAudioChannels() als Parameter für den Konstruktor von FFmpegFrameRecorder verwenden, wenn Sie den FrameGrabber und den FrameRecorder als Feedback-Implementierung verwenden möchten.
  4. Um den Sound von FrameGrabber aufzunehmen, muss der Parameter Frame.image bei jeder Iteration überprüft werden. Wenn dies nicht null ist, notieren Sie das iplImage oder, wenn es null ist, nehmen Sie den Frame auf. Dadurch fügen Sie der aufgenommenen Datei sowohl Sound als auch iplImage hinzu.
  5. Die iplImage und Bitmap können mit den Funktionen writeToBuffer und coppyFromBuffer einfach untereinander konvertiert werden. Es ist jedoch zu beachten, dass Bitmap 4 Kanäle zugeordnet ist, daher sollte das iplImage-Objekt auch 4-Kanalisiert sein.
  6. schließlich über Bildfilter, waren folgende Funktionen ausreichend meine Bedürfnisse zu dienen:
    1. Smooth: cvSmooth (IPLSRC, IPLSRC, CV_GAUSSIAN, 9,9,2,2);
    2. Blur: Unschärfe = (int) (.05 * IplSrc.Breite()); cvSmooth (IplSrc, IplSrc, CV_BLUR, Blur);
    3. Graustufen: cvCvtColor
    4. Vintage: cvAddS
    5. Smooth: cvSmooth (IPLSRC, IPLSRC, CV_MEDIAN, 13);
    6. Kontrast: cvInRangeS()