【问题标题】:opencv threshold or not equal operatoropencv 阈值或不等于运算符
【发布时间】:2015-03-31 06:33:21
【问题描述】:

我的matlab代码是

imTemp(imTemp ~= maxInd) = 0;

其中 imTemp 是 100x100 双矩阵且 maxInd == 1

我考虑过使用 cv::threshold http://docs.opencv.org/doc/tutorials/imgproc/threshold/threshold.html

但这并没有真正帮助我。
只有当 src(x,y)>thresh.... 做某事
你能想到另一个可以实现这个逻辑的openCV函数吗?

【问题讨论】:

    标签: c++ opencv


    【解决方案1】:

    您可以尝试compare,它可以使用CMP_EQ检查矩阵和标量(或其他矩阵)之间的相等性。

    不幸的是,compare 具有令人讨厌的特性,即满足比较运算符的值设置为 255 而不是 1 或原始值,因此您必须除以得到 Matlab 行为。

    Mat imTemp = (Mat_<double>(3,3) << 9,7,4,4,9,6,2,0,1);
    double maxInd = 9;
    cout << "imTemp Original:" << endl;
    cout << imTemp << endl;
    
    compare(imTemp, Scalar(maxInd), imTemp, CMP_EQ);
    imTemp = imTemp*maxInd/255;
    
    cout << "imTemp Compared:" << endl;
    cout << imTemp << endl;
    

    输出:

    imTemp Original:
    [9, 7, 4;
      4, 9, 6;
      2, 0, 1]
    imTemp Compared:
    [9, 0, 0;
      0, 9, 0;
      0, 0, 0]
    

    您也可以直接使用比较运算符得到相同的结果(具有相同的 255 行为):

    Mat imTemp = (imTemp == maxInd)*maxInd/255;
    

    【讨论】:

      猜你喜欢
      • 2015-05-25
      • 1970-01-01
      • 2011-03-13
      • 2011-05-04
      • 2012-09-03
      • 2016-07-29
      • 2014-03-22
      • 2019-12-07
      • 2022-09-24
      相关资源
      最近更新 更多