Обнаружение ученика в opencv

Я делаю признание радужной оболочки для моего проекта последнего года. Теперь я смог обнаружить радужную оболочку с помощью кругового преобразования Хафа, но он не работает при обнаружении зрачков, хотя я изменяю свою веб-камеру на ИК-камеру. пытался использовать цвет HSV для обнаружения черного цвета в радужной оболочке, но он все еще не может работать, так какие алгоритмы мне следует использовать?

IplImage *capturedImg = cvLoadImage("template.jpg",1);
  IplImage* imgHSV = cvCreateImage(cvGetSize(capturedImg), 8, 3);
cvCvtColor(capturedImg, imgHSV, CV_BGR2HSV);

  IplImage* imgThreshed = cvCreateImage(cvGetSize(capturedImg), 8, 1);
       cvInRangeS(imgHSV, cvScalar(0, 0,0, 0), cvScalar(179, 200, 50,77), imgThreshed);
       cvShowImage("HSV",imgThreshed);

1 ответ

Если вы хотите найти черный, он будет присутствовать там, где значение близко к нулю. Вы можете изменить команду cvInRangeS на следующее:

cvInRangeS(imgHSV, cvScalar(0,0,0) , cvScalar(255, 255,27), imgThreshed);

Таким образом, вы исключаете пиксели, если их значение больше 27. Возможно, вы захотите поэкспериментировать со значениями оттенка и насыщенности, чтобы увидеть, что работает лучше всего. Кроме того, поскольку каждый пиксель в изображении имеет три канала, я не думаю, что имеет смысл использовать 4-канальный скаляр при использовании cvInRangeS.

В любом случае, когда я запустил этот код на моем компьютере, это было результатом:

Точно не изолирует левую радужку

Вы можете использовать обнаружение капли, чтобы изолировать левую радужку на этом изображении. Возможно, вы захотите проверить эту библиотеку: http://code.google.com/p/cvblob/

Другие вопросы по тегам