2015-03-21 3 views
1

Я хочу осуществить это заявление MATLAB в OpenCV C++:OpenCV эквивалент пороговым в MATLAB

bwImgLabeled(bwImgLabeled > 0) = 1; 

Насколько я понимаю, с тех пор OpenCV документы, http://docs.opencv.org/modules/imgproc/doc/miscellaneous_transformations.html?highlight=threshold#threshold, мне нужно сделать:

cv::threshold(dst, dst, 0, 1, CV_THRESH_BINARY); 

Я исправлю здесь?

ответ

0

Да, вы правы. Что код MATLAB делает то, что он ищет любые пиксели, которые отличны от нуля и устанавливает их в 1.

Напомним определение cv::threshold:

double threshold(InputArray src, OutputArray dst, 
       double thresh, double maxval, int type) 

Таким образом, первые два входа являются источником и целевых изображений, где в вашем случае вы хотите взять целевое изображение и изменить его, чтобы он содержал конечное изображение. thresh = 0 и maxval = 1, с type=CV_THRESH_BINARY. Напомним, при использовании CV_THRESH_BINARY, следующее соотношение происходит:

http://docs.opencv.org/_images/math/21dfc802899546a3a9a51794d241330e6377f032.png

Поэтому, если вы укажете thresh быть 0, maxval быть 1, вы эффективно делать то, что делает код MATLAB. Любые пиксели, превышающие , которые по существу не равны нулю, вы устанавливаете эти интенсивности равными 1. Предполагаю, что входные и выходные изображения должны быть с плавающей точкой, поэтому убедитесь, что изображение совместимо типа, например CV_32FC1, или CV_32FC3, и так далее.

Смежные вопросы