2014-04-24 13 views
5

Tôi muốn áp dụng các bộ lọc (Thang độ xám, Cổ điển, Độ tương phản, Làm sắc nét, Làm mờ, Mịn, v.v) cho iplImage của JavaCv. Trong khi làm như vậy, tôi đã đi qua các chức năng/Lớp học: iplImage, CvMat, cvInRangeS, cvCvtColor, cvSmooth. Tôi muốn tìm kiếm một số làm rõ về những điều này. Sau đây là những thắc mắc cụ thể của tôi:Lọc/Thao tác Hình ảnh Sử dụng JavaCv (Java wrapper cho OpenCV) trong Android

  1. iplImage cvMatrix Bitmap chuyển đổi
  2. Format iplImage của HSV/RGB/BGR ..... ARGB/XYZ/Bayer/LUV trong tài liệu tham khảo để cvCvtColor
  3. cvSmooth hình thức khác nhau
  4. cvInRange diễn
  5. Cách sử dụng CvMat
  6. tôi có thể xây dựng các bộ lọc của tôi với những bài
+0

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

+0

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

+0

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

Trả lời

2

Tôi muốn chia sẻ kiến ​​thức mà tôi đã có được khi sử dụng JavaCv để lọc hình ảnh và video. Tôi đã thành công trong việc phát triển các bộ lọc của mình (Màu xám, Cổ điển, Tương phản, Làm sắc nét, Làm mờ & Mịn) bằng JavaCv. Tôi có thể dễ dàng thực hiện Lọc hình ảnh bằng Thao tác bitmap, nhưng quá chậm để sử dụng cho Lọc Video.

Đây là một số điểm quan trọng mà tôi muốn làm nổi bật

  1. FFmpegFrameGrabber cho chúng ta một đối tượng Frame. Đối tượng này có hai phần: iplImage và Sound. Frame.image cung cấp cho iplImage và nếu Frame.image == null, thì đó là Sound. Trên thực tế, đối tượng Frame chỉ chứa iplImage hoặc âm thanh tại một trường hợp thời gian cụ thể.
  2. iplImage nhận bởi Frame.image, có định dạng YCrCb. Vì vậy, bằng cách sử dụng cvColor sẽ sử dụng tham số chuyển đổi CV_YCrCb2RGB, CV_YCrCb2RGBA, vv
  3. Bây giờ nói về FFmpegFrameRecorder, người ta có thể dễ dàng ghi lại một iplImage bằng cách sử dụng lớp này và tạo video gọi ghi.record (Ipl_Image). Bạn có thể sử dụng frameGrabber.getImageWidth(), frameGrabber.getImageHeight(), frameGrabber.getAudioChannels() làm tham số cho hàm tạo của FFmpegFrameRecorder, nếu bạn muốn sử dụng FrameGrabber và FrameRecorder như một bản thực hiện Phản hồi.
  4. Để ghi lại âm thanh từ FrameGrabber, nó yêu cầu kiểm tra tham số Frame.image tại mỗi lần lặp. Nếu đây không phải là null, sau đó ghi lại iplImage hoặc nếu nó là null ghi lại Frame. Thao tác này sẽ thêm cả âm thanh và iplImage vào tệp đã ghi.
  5. iplImage và Bitmap có thể được chuyển đổi dễ dàng bằng cách sử dụng các hàm writeToBuffer và coppyFromBuffer. Nhưng điều cần lưu ý là Bitmap có 4 kênh liên kết với nó, vì vậy đối tượng iplImage cũng phải là 4 kênh.
  6. Cuối cùng về bộ lọc hình ảnh, các chức năng sau đây đủ để đáp ứng nhu cầu của tôi:
    1. Mịn: cvSmooth (IplSrc, IplSrc, CV_GAUSSIAN, 9,9,2,2);
    2. BLur: Blur = (int) (.05 * IplSrc.chiều rộng()); cvSmooth (IplSrc, IplSrc, CV_BLUR, Blur);
    3. Gray Scale: cvCvtColor
    4. Vintage: cvAddS
    5. mượt: cvSmooth (IplSrc, IplSrc, CV_MEDIAN, 13);
    6. Contrast: cvInRangeS()
Các vấn đề liên quan