Стандартизировать вход камеры в OpenCV? (Контрастность / Насыщенность / Яркость и т. Д.) - PullRequest
3 голосов
/ 29 апреля 2010

Я создаю приложение с использованием OpenCV, которое использует веб-камеру и использует некоторые алгоритмы зрения.Я хотел бы сделать это приложение доступным в Интернете после того, как я закончу, но я обеспокоен огромными различиями в настройках камеры на каждом компьютере, и я обеспокоен тем, что алгоритм может сломаться, если настройки слишком отличаются от моих.

Есть ли способ, после захвата кадра, постобработать его и убедиться, что контраст - это X, яркость - Y, а насыщенность - Z?Я думаю, что сами настройки камеры не могут быть изменены из кода напрямую, используя текущие привязки OpenCV Python.

Кто-нибудь сможет рассказать мне о том, как я могу рассчитать некоторые из этих параметров из изображения и настроить их соответствующим образом, используяOpenCV

Ответы [ 2 ]

3 голосов
/ 29 апреля 2010

Вы можете опубликовать свою фотографию в openCV несколькими способами.

Чтобы установить контраст, вы можете использовать функцию equalizeHist .

Чтобы установить яркость и насыщенность, вы должны сначала преобразовать изображение в цветовое пространство HSV с помощью cvtColor . Затем вы можете изменить насыщенность и значение (яркость) до соответствующего значения, непосредственно обращаясь к каждому пикселю изображения.

2 голосов
/ 07 октября 2010

Я немного борюсь с той же проблемой. Вот фрагмент кода, который удаляет всю информацию о значении (яркости) из изображения, делая его, возможно, немного более стабильным в ситуациях, когда количество света сильно меняется. Конечно, вы также можете настроить любые другие параметры:

    // 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...