2014-07-24 1 views
0

OpenCV와 함께 Android 버전으로 작업 중이며 RGB 매트이며 카메라 미리보기를 탐색하기 위해 '값 2'로 새 값 픽셀을 설정하려고 할 때 . 카메라 디스플레이가 지연됩니다.OpenCV - Android - 저 대기 시간 카메라 미리 설정 픽셀 값 설정

내 목표는 예를 들어 표준 파란색으로 빨강 색 근처의 픽셀 값을 변경하는 것입니다. 문제에 집중하려고 할 때 결과를 뒤지는 디스플레이를 탐색하는 것으로 나타났습니다.

위, 이러한 내 검색 코드 :

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); 
       } 

      } 
     } 

는 // 결과는 지연!

대기 시간이나 문제없이 찾아 볼 수있는 다른 방법이 있습니까?

고마워요!

+1

루프를 반복합니다. 느려질 것입니다. 가능한 경우 LUT를 사용하십시오. – Froyo

+0

LUT? 예 ? –

답변

0

이것은 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); 
}