2013-04-16 4 views
0

C++ я столкнулся один раз в коде OpenCV это выражение:Что это выражение означает в

Mat bimage = image >= sliderPos; 

Известно, что sliderPos является целым числом.

Что это значит, пожалуйста.

Заранее спасибо

Сложение: конечно тип image является cv::Mat

+1

Посмотрите на перегрузку оператора '> =' в типе данных переменной 'image'. –

+1

Каков тип 'image'? Мое предположение заключалось бы в том, что 'bimage' заканчивается тем, что содержит матрицу, элементы которой указывают, больше или равно значение соответствующего пикселя в' image' или 'sliderPos' (но это только предположение). –

+2

См. Здесь: http://stackoverflow.com/questions/9783538/mat-logic-operator-in-opencv-2-3 и здесь: http://docs.opencv.org/doc/tutorials/imgproc/threshold /threshold.html – rsc

ответ

3

Трудно сказать, не зная тип image, но в соответствии с документацией OpenCV, я думаю, что эта линия преобразует image в черно-белое изображение, используя sliderPos в качестве порогового значения для определения пикселов будет черным.

От the OpenCV documentation about matrices:

сравнения: cmpop В, А cmpop альфа, альфа cmpop А, где cmpop является одним из :!>,> =, ==, =, = <, <. Результат сравнения представляет собой 8-битный одну маски канала, элементы которого установлены на 255 (если конкретный элемент или пара элементов удовлетворяет условие) или 0.

+0

image имеет тип cv :: Mat и я видел в документации, что> = is cv :: compare, но как получилось, что тип cv: Mat можно сравнить с целым числом (порогом)? – 2013-04-16 09:41:26

+0

@abualbara Потому что он имеет перегруженные сравнения, которые сравнивают каждый элемент в матрице со скаляром. – molbdnilo

1

Выражение

Mat bimage = image >= sliderPos; 

проверяет, является ли image больше или равна sliderPos (который обычно дает bool) и присваивает результат теста новой созданной переменной bimage типа Mat.

Если оператор >= перегружен для (decltype(image), int), он может не дать bool. Если это так, посмотрите подробную документацию по типу image. В любом случае это дает что-то, из чего можно построить Mat.