Да, вы правы. Что код 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
, и так далее.