2014-01-22 3 views
1

OpenCv에서 픽셀의 강도 값에 액세스하는 방법을 많이 검색 한 후에 웹에 아무것도 없다는 것을 알았습니다. 그레이 스케일 이미지.OpenCV에서 특정 픽셀의 강도 값 (회색 명암 이미지)에 액세스

대부분의 온라인 검색이처럼 컬러 이미지의 BGR의 값에 액세스하는 방법에 대해 다음과 같습니다> 3 개 채널 기본적으로 Accessing certain pixel RGB value in openCV

image.at <, 즉 BGR은 호기심에서, 거기에 또 다른입니다 그레이 스케일 이미지의 특정 픽셀 값에 액세스하는 OpenCV와 유사한 방법?

+0

[OpenCV의 계조의 화상의 화소 값에 액세스 (가능 중복 http://stackoverflow.com/questions/17919399/accessing-pixel-value-of-gray-scale- image-in-opencv) –

답변

6

image.at<uchar>(j,i)을 사용하여 회색 명암 이미지의 픽셀 값에 액세스 할 수 있습니다.

3

cv::Mat::at<>() 기능은 단일 채널 이미지이든 멀티 채널 이미지이든 모든 이미지 유형에 대한 기능입니다. 리턴되는 값의 유형은 함수에 제공된 템플리트 인수에 따라 달라집니다.

그레이 이미지의 값과 같이 접근 될 수있다 :

//For 8-bit grayscale image. 
unsigned char value = image.at<unsigned char>(row, column); 

은 콘텐츠 타입 (8U, 16U, 32F 등)에 따라 적절한 데이터 형식을 반환하십시오.

+1

OpenCV가 row, col을 사용하기 때문에'image.at (y, x)'이어야한다는 점을 제외하고는 알았습니다. –

+0

@RogerRowland ... 네, 맞습니다. – sgarizvi

+0

그런 다음 답을 편집하여 명확한 양심으로 업 그레 이드 할 수 있습니다 ;-) –

3
  • IplImage* image 들어, 만약] ++ (X, Y)에

    uchar intensity = image.at<uchar>(y, x); 
    
-2

사용할 수 Mat image 들어

uchar intensity = CV_IMAGE_ELEM(image, uchar, y, x); 
  • 사용할 수있다;

    for(int i = 0; i < 256; i++) 
        cout<<histogram[i]<<" "; 
    
    // draw the histograms 
    int hist_w = 512; int hist_h = 400; 
    int bin_w = cvRound((double) hist_w/256); 
    
    Mat histImage(hist_h, hist_w, CV_8UC1, Scalar(255, 255, 255)); 
    
    // find the maximum intensity element from histogram 
    int max = histogram[0]; 
    for(int i = 1; i < 256; i++){ 
        if(max < histogram[i]){ 
         max = histogram[i]; 
        } 
    } 
    
    // normalize the histogram between 0 and histImage.rows 
    
    for(int i = 0; i < 255; i++){ 
        histogram[i] = ((double)histogram[i]/max)*histImage.rows; 
    } 
    
    
    // draw the intensity line for histogram 
    for(int i = 0; i < 255; i++) 
    { 
        line(histImage, Point(bin_w*(i), hist_h), 
              Point(bin_w*(i), hist_h - histogram[i]), 
         Scalar(0,0,0), 1, 8, 0); 
    } 
    
    // display histogram 
    namedWindow("Intensity Histogram", CV_WINDOW_AUTOSIZE); 
    imshow("Intensity Histogram", histImage); 
    
    namedWindow("Image", CV_WINDOW_AUTOSIZE); 
    imshow("Image", image); 
    waitKey(); 
    return 0; 
    

    }

  • +3

    질문은 히스토그램과 관련이 없습니다. –

    관련 문제