C++;关于opencv3 我对C++不太好,但我开始学习了。我通过看别人的代码来学习
我正在看Opencv上的SVM教程 我不明白上面的部分 (Mat_(1,2)C++;关于opencv3 我对C++不太好,但我开始学习了。我通过看别人的代码来学习,c++,opencv,C++,Opencv,我正在看Opencv上的SVM教程 我不明白上面的部分 (Mat_(1,2) >代码>(C++中的Mat1(1,2)名称可以有尾部下划线。“Mati”是函数的普通名称。在这种情况下,Mati与垫子类有关,但不相同。它用于创建类型的矩阵,同时指定其特征。 在这种特殊情况下,sampleMat对象将有1列和2行,因此它看起来像一个维度为2的向量,并且将为其指定值(j,i) 更具体地说: Mat是函数的名称 是一种模板类型,用于指定矩阵将包含何种类型的元素 (1,2)是初始化参数,用于创建一列两行
是函数的名称Mat
是一种模板类型,用于指定矩阵将包含何种类型的元素
是初始化参数,用于创建一列两行的矩阵(1,2)
好的,我知道它正在创建一个1x2矩阵,但我仍然不明白为什么它应该是j和i,而不是i和j。OpenCV使用顺序
-i
。笛卡尔坐标使用顺序j
-j
。这只是一种约定。它不仅仅是OpenCV。矩阵通常通过行、列访问i
// Show the decision regions given by the SVM Vec3b green(0,255,0), blue (255,0,0); for (int i = 0; i < image.rows; ++i) for (int j = 0; j < image.cols; ++j) { Mat sampleMat = (Mat_<float>(1,2) << j,i); float response = svm->predict(sampleMat); if (response == 1) image.at<Vec3b>(i,j) = green; else if (response == -1) image.at<Vec3b>(i,j) = blue; }