2010-04-28 211 views
3

我正在使用OpenCV構建一個應用程序,該應用程序使用網絡攝像頭並運行一些視覺算法。我想在完成後在互聯網上提供此應用程序,但我擔心每臺計算機上相機設置的巨大差異,我擔心如果設置與我的設置太不相同,算法可能會中斷。在OpenCV中標準化攝像頭輸入? (對比度/飽和度/亮度等)

有沒有什麼辦法,捕捉框架後,後處理它,並確保對比度是X,亮度是Y,飽和度是Z?我認爲攝像頭設置本身不能直接使用當前的OpenCV Python綁定從代碼改變。

任何人都可以告訴我如何從圖像中計算這些參數,並使用OpenCV適當地調整它們嗎?

回答

3

您可以通過幾種方式在openCV中發佈您的圖像。

要設置對比度,您可以使用equalizeHist函數。

要設置亮度和飽和度,您應該先將圖像轉換爲HSV色彩空間,並使用cvtColor。然後,您可以通過直接訪問每個圖像像素來將飽和度和值(亮度)修改爲適當的值。

+0

Hello Rics,你能告訴我1件事我們可以增加和減少OpenCV中圖像的清晰度嗎? – 2011-05-25 05:43:26

+0

這裏是一個stackoverflow參考,希望能回答你的問題:http://stackoverflow.com/questions/4993082/how-to-sharpen-an-image-in-opencv – rics 2011-05-30 12:01:41

2

我很苦惱有同樣的問題。這是一段代碼,它可以從圖像中提取所有的值(亮度)信息,使得在光量變化很大的情況下它可能更加穩定。您當然也可以調整其他任何參數:

// img is an rgb image 
    cvCvtColor(img, img, CV_RGB2HSV); 
    for(int y=0; y<img->height; y++) { 
     uchar* ptr = (uchar*) (
      img->imageData + y * img->widthStep 
     ); 
     for(int x=0; x<img->width; x++) { 
      ptr[3*x+2] = 255; // maxes the value, 
      // use +1 for saturation, +0 for hue 
     } 
    } 

    // convert back for displaying 
    cvCvtColor(img, img, CV_HSV2RGB); 
相關問題