a =(b == c)的结果是什么?

Fre*_*ong -3 c++ opencv

我正在使用c ++和OpenCv库开发计算机视觉项目.我经常在研究过程中看到那种代码:
image_是一个cv :: Mat
c是一个int

cv::Mat cluster = (image_ == c)*255;
Run Code Online (Sandbox Code Playgroud)

我认为它在集群中放了一个布尔值,但我不太确定.

Che*_*Alf 6

从应用于其矩阵的OpenCV文档==:

"比较结果是一个8位单通道掩码,其元素设置为255(如果特定元素或元素对满足条件)或0.

"缩放:A*alpha

也就是说,到目前为止,3个答案在这里是假设==总是产生bool在这种情况下,是错误的:这取决于你的类型的image_c,如果他们是矩阵上述报价适用.如果他们不是,我不确定代码是否会编译.但你可以检查一下.

  • 简而言之:`(image_ == c)`的结果是带有条目0的矩阵,其中image_不等于c和255,其中image_等于c.然后将每个矩阵条目乘以255,这不会改变任何东西,因为8位矩阵已经饱和到255 :)至少如果矩阵类型是标准类型. (2认同)