gpt4 book ai didi

android - 在 Android 中使用 JavaCv(OpenCV 的 Java 包装器)进行图像过滤/操作

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:04:33 25 4
gpt4 key购买 nike

我的目标是将过滤器(灰度、复古、对比度、锐化、模糊、平滑等)应用于 JavaCv 的 iplImage。在这样做的过程中,我遇到了这些函数/类:iplImage、CvMat、cvInRangeS、cvCvtColor、cvSmooth。我想就这些寻求一些澄清。以下是我的具体查询:

  1. iplImage cvMatrix 位图转换
  2. iplImage 的格式 HSV/RGB/BGR.....ARGB/XYZ/Bayer/LUV 引用 cvCvtColor
  3. cv平滑各种形式
  4. cvInRange 演示
  5. cvMat 的使用
  6. 我可以用这些来构建我的过滤器吗

最佳答案

我想分享我在使用 JavaCv 进行图像和视频过滤时获得的知识。我已经成功地使用 JavaCv 开发了我的过滤器(灰度、复古、对比度、锐化、模糊和平滑)。我可以轻松地使用位图操作进行图像过滤,但它太慢而无法用于视频过滤。

这些是我想强调的一些关键点

  1. FFmpegFrameGrabber 为我们提供了一个 Frame 对象。该对象有两部分:iplImage 和 Sound。 Frame.image 给出了 iplImage,如果 Frame.image==null,那么它就是 Sound。实际上,Frame 对象仅包含 iplImage 或某个特定时间实例的声音。
  2. Frame.image 接收到的 iplImage,格式为 YCrCb。因此使用 cvColor 将使用转换参数 CV_YCrCb2RGB、CV_YCrCb2RGBA 等。
  3. 现在谈论 FFmpegFrameRecorder,可以使用此类轻松录制 iplImage 并生成调用 recorder.record(Ipl_Image) 的视频。如果您希望使用 FrameGrabber 和 FrameRecorder 作为反馈实现,您可以使用 frameGrabber.getImageWidth()、frameGrabber.getImageHeight()、frameGrabber.getAudioChannels() 作为 FFmpegFrameRecorder 构造函数的参数。
  4. 要从 FrameGrabber 录制声音,需要在每次迭代时检查 Frame.image 参数。如果这不为 null,则记录 iplImage,或者如果它为 null,则记录 Frame。这样做会将声音和 iplImage 添加到录制的文件中。
  5. 可以使用 writeToBuffer 和 coppyFromBuffer 函数轻松地相互转换 iplImage 和 Bitmap。但要记住的是,Bitmap 有 4 个与之关联的 channel ,因此 iplImage 对象也应该是 4 channel 的。
  6. 最后关于图像过滤器,以下功能足以满足我的需求:
    1. 平滑:cvSmooth(IplSrc,IplSrc,CV_GAUSSIAN,9,9,2,2);
    2. BLur : Blur=(int) (.05*IplSrc.width()); cvSmooth(IplSrc, IplSrc, CV_BLUR,Blur);
    3. 灰度:cvCvtColor
    4. 年份:cvAddS
    5. 平滑:cvSmooth(IplSrc, IplSrc, CV_MEDIAN, 13);
    6. 对比度:cvInRangeS()

关于android - 在 Android 中使用 JavaCv(OpenCV 的 Java 包装器)进行图像过滤/操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23270310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com