C++ on Opencv 3
C++ on Opencv 3
我不擅长c++,但我正在开始学习。我通过看别人的代码来学习。
我正在查看openv上的SVM教程
我不明白
上的部分(Mat_(1、2)& lt; & lt;
j,我);Mat_(1,2)是什么意思?具体来说_代表什么?
为什么j和i被送入矩阵?不是应该是i和j吗,其中i =行,j =列?
// 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; }
-
(Mat_<float>(1,2) << j,i)
:创建一个1 × 2的矩阵,并填充i
和j
的值。 - 函数
cv::Mat::operator()
要求您指定行(i
)和列(j
),但是进入函数predict()
的数据只是使用其他顺序。从教程:
[…遍历图像,将其像素解释为笛卡尔平面上的点。[…]
c++中的名字可以有下划线。"Mat_"是函数的普通名称。在这种情况下,Mat_与Mat类相关,但不相同。它用于创建类型为Mat的矩阵,同时指定其特征。
在这个特殊的例子中,sampleMat对象将有1列和2行,所以它看起来像一个2维的向量,值(j,i)将被分配给它。
更具体地说:
-
Mat_
为函数名 -
<float>
是模板类型,指定矩阵将包含什么样的元素 -
(1,2)
是初始化参数,它创建一个一列两行矩阵。 -
<<
是一个重载操作符,表示矩阵初始化时将赋给以下参数 -
j,i
是赋给矩阵 的两个参数
相关文章:
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 将OpenCV C++重写为EmguCV C#-如何使用指针
- 瓦尔格林德:数学函数"Conditional jump or move depends on uninitialised value(s)"
- OpenCV C++.快速计算混淆矩阵
- 在C++代码中包含opencv时,使用ctypes创建.so文件
- 哪些库可以通过Opencv调整曝光率
- 安装opencv失败-粘贴CMakeError.log的内容
- C++中的openCV Mat访问冲突
- Building OpenCV 2.4.11 on Linux with `libopencv_ffmpeg.so`
- OpenCV on eclipse on windows
- calcOpticalFlowPyrLK on openCV 2.4.2
- SIGSEGV on OpenCV JNI from Android
- 分段错误 - OpenCV 和 Qt in Netbeans on Ubuntu
- OpenCv and Ruby on Rails
- C++ on Opencv 3
- Eclipse and OpenCV on Ubuntu