gpt4 book ai didi

android - OpenCV imwrite,颜色错误: Which argument for convertTo/cvColor do I use?

转载 作者:太空宇宙 更新时间:2023-11-03 21:47:49 25 4
gpt4 key购买 nike

好的,所以我一直在网上尝试和搜索,但我找不到这个。

我有:

  1. 我混合使用的 OpenCV4Android:Java 和 Native。
  2. 获得的垫子

    capture.retrieve(mFrame, Highgui.CV_CAP_ANDROID_COLOR_FRAME_RGBA);

这个不能改成Native,因为它是别人的库,完全是用非本地方式构建的。

  1. 我使用 mFrame.nativeObj 将此 Mat 传递给的本地方法并使用:

    JNIEXPORT int JNICALL Java_com_... ( ...jlong addr ... )
    {

    Mat& mrgba = *((Mat*)addr);

    // do stuff

    imwrite( mrgba, ... );
    }

现在...我使用这个矩阵,然后用 imwrite 编写它,所有这些都在 native 部分中。虽然 imwrite 确实写了一个文件,但它的颜色都是错误的。应该是白色的地方是红色,应该是黑色的地方是绿色,应该是我 table 颜色的地方是紫色,即淡黄色。现在,与其盲目地尝试 cvColorconvertTo,我更愿意了解东西。

关于首先使用

检索的帧,我应该知道的 channel 数、类型、 channel 顺序以及诸如此类的东西是什么
capture.retrieve(mFrame, Highgui.CV_CAP_ANDROID_COLOR_FRAME_RGBA);

然后通过 JNI 传递给原生 OpenCV?实际上,我需要进行哪些转换才能使 native imwrite 正常运行?

最佳答案

由于某种原因,用

获得的图像
capture.retrieve(mFrame, Highgui.CV_CAP_ANDROID_COLOR_FRAME_RGBA);

需要这样转换:

cvtColor(mrgba, mbgr, CV_YCrCb2RGB, 4);

为了让 imwrite 正确输出图像到 SD 卡。

我不明白为什么(imwrite 应该接受 BGR 图像),但这至少回答了我的问题。

关于android - OpenCV imwrite,颜色错误: Which argument for convertTo/cvColor do I use?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14341780/

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