2015-01-02 3 views
0

openCv에서 그레이 이미지의 그레이 스케일을 줄이는 방법이 있습니까?EmguCv : 그레이 스케일 줄이기

는 Normaly 난

Image<Gray, byte> inputImage 0에서 256 grayvalues있다.

제 경우에는 0-10의 회색 값이 필요합니다. OpenCV로 할 수있는 좋은 방법이 있나요? 특히 C#입니다.

답변

1

이런 종류의 일을 허용하는 OpenCV에는 기본 제공되는 것이 없습니다.

그럼에도 불구하고 직접 무언가를 쓸 수 있습니다. 이 C++ implementation를 살펴보고 단지의 C#로 번역 :

void colorReduce(cv::Mat& image, int div=64) 
{  
    int nl = image.rows;     // number of lines 
    int nc = image.cols * image.channels(); // number of elements per line 

    for (int j = 0; j < nl; j++) 
    { 
     // get the address of row j 
     uchar* data = image.ptr<uchar>(j); 

     for (int i = 0; i < nc; i++) 
     { 
      // process each pixel 
      data[i] = data[i]/div * div + div/2; 
     } 
    } 
} 

그냥이 기능 그레이 Mat를 전송하고 div 매개 변수를 사용하여 재생할 수 있습니다.