【问题标题】:OpenCV - Android - low latency Camera Preview in setting pixel valueOpenCV - Android - 设置像素值时的低延迟相机预览
【发布时间】:2014-07-24 09:52:14
【问题描述】:

我正在使用带有 Android 版本的 OpenCV,它是一个 RGB Mat,当我尝试使用 2'for' 设置新值像素以浏览相机预览时。相机显示滞后。

例如,我的目标是使用标准蓝色将像素值更改为接近红色。当我试图专注于这个问题时,我注意到是显示的浏览滞后了结果。

以上是我的浏览代码:

for (int i=0; i<480; i++)
        {
            for (int j=0; j<720; j++)
            {          

                int red = (int) rgba.get(j,i)[0];
                int green = (int) rgba.get(j,i)[1];
                int blue = (int) rgba.get(j,i)[2];

                Log.v(TAG, "RED=" + red);
                if(red <= 50){
                    rgba.put(j, i, 0, 0, 255, 0);
                }

            }
        }

// 结果滞后!

还有其他没有延迟或问题的浏览方法吗?

谢谢大家!

【问题讨论】:

  • 您正在遍历一个循环。它会很慢。尽可能使用 LUT。

标签: android opencv camera set pixel


【解决方案1】:

这是一个 C++ 实现。您可以自己用 Java 编写或使用本机代码。

#include "opencv2/highgui/highgui.hpp"
#include <opencv2/imgproc/imgproc.hpp>
#include <stdio.h>

using namespace cv;
using namespace std;

int main(int argc, char* argv[]) {
    Mat img = imread(argv[1]);
    Mat lut(1, 256, CV_8UC3);

    for(int i=0; i<256; i++) {
        if (i <= 50) {
            lut.at<Vec3b>(i) = Vec3b(255, 0, 0); // bgr
        } else {
            lut.at<Vec3b>(i) = Vec3b(i, i, i);
        }
    }

    Mat retVal;
    LUT(img, lut, retVal);

    imshow("img", img);
    imshow("retVal", retVal);

    waitKey(0);
}

【讨论】:

    猜你喜欢
    • 2013-01-26
    • 1970-01-01
    • 2021-08-28
    • 2017-02-11
    • 1970-01-01
    • 2015-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多