MATLAB Logical Indexing 的 OpenCV 实现

这篇文章主要是 stackoverflow 上的一个问题 How To Index And Modify An OpenCV Matrix 的翻译。在 MATLAB 里,Logical Indexing 是非常常见的一种用法,具体示例如下:

A = [1;2;3;1;2;3;1;2;3];
A(A==1) = 0
% Resulting in:
% [0;2;3;0;2;3;0;2;3]

在 OpenCV 里,Logical Indexing 的实现并不像 MATLAB 那样简洁,但也相差不大。setTo() 函数可以接受 cv::Mat 的逻辑运算,比如 ==!=,的结果作为参数,具体代码可见 OpenCV-and-CPP-for-MATLAB-Users Demo_OpenCVFunctions 文件夹下的 demo_setTo.cpp 函数,为了方便起见,将代码陈列如下:

#include 
#include 

void demo_setTo()
{
    uchar data[] = {1,2,3,1,2,3,1,2,3};
    //cv::Mat A(9, 1, CV_8UC1, data); // 1, 9 is also OK
    cv::Mat A(1, 9, CV_8UC1, data);
    std::cout<<"Before: A = "<

你可能感兴趣的:(MATLAB Logical Indexing 的 OpenCV 实现)