C++ 理解OpenCV方法

C++ 理解OpenCV方法,c++,opencv,C++,Opencv,我试图找出OpenCV使用的文档化方法 可以在这里找到: 问题在于,它基于滑块位置对图像应用阈值,但与原始图像相关的滑块值的唯一行是: Mat bimage=图像>=幻灯片 然而,这对我来说毫无意义,在bimage/image上使用imshow显示它们是平等的 有人能解释一下那里发生了什么事吗? 如果这是显而易见的,我很抱歉。我不是一个很棒的C++程序员(但是)。 createTrackbar("threshold", "result", &sliderPos, 255, process

我试图找出OpenCV使用的文档化方法

可以在这里找到:

问题在于,它基于滑块位置对图像应用阈值,但与原始图像相关的滑块值的唯一行是:

Mat bimage=图像>=幻灯片

然而,这对我来说毫无意义,在bimage/image上使用imshow显示它们是平等的

有人能解释一下那里发生了什么事吗? 如果这是显而易见的,我很抱歉。我不是一个很棒的C++程序员(但是)。
createTrackbar("threshold", "result", &sliderPos, 255, processImage);
第四个参数(
255
)是最大滑块值。最小值总是
0
<因此,代码>滑块将采用范围
[0255]
内的值

这一行:

Mat bimage = image >= sliderPos;
是一种简单的二值化:
bimage
是一种二值图像,如果
image
中的对应值小于
=
则每个像素的值为255,否则为0。 这与:

Mat bimage;
threshold(image, bimage, sliderPos-1, 255, THRESH_BINARY);
bimage
image
是不同的
bimage
只有
0
255
值,而
image
可以有
[0255]
范围内的任何值,如中所述,它是二值化(0或255):

比较:cmpop B,cmpopα,αcmpop A,其中cmpop为 >,>=,=,!=,=中的一个幻灯片)的类型为。 最后调用以下
Mat bimage

Mat& cv::Mat::operator= (const MatExpr & expr)  

它将
Mat bimage
设置为生成的
MatExpr
对象的值。

这似乎是答案。不过我必须测试一下,因为我几乎可以肯定,使用imshow时,“bimage”和“image”看起来是一样的。我用阈值或inRange(我想)制作了二值图像,但从未见过>=技巧。测试后我会给它标上答案。
MatOp_Cmp::makeExpr(e, CV_CMP_GE, a, b);
res = MatExpr(&g_MatOp_Cmp, cmpop, a, b, Mat(), 1, 1);
Mat& cv::Mat::operator= (const MatExpr & expr)