如何在 OpenCV 64FC1 矩阵中设置值

Tom*_*Tom 0 c++ opencv matrix

我正在尝试制作一个三行一列的矩阵,其中包含值 1、2 和 3。

int main(int argc, char *argv[])
{

    cv::Mat point = cv::Mat::ones(3, 1, CV_64FC1);
    point.at<double>(1,1) = 1.0d;
    point.at<double>(1,2) = 2.0d;
    point.at<double>(1,3) = 3.0d;
    std::cout << point << std::endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出是:

[1
 1
 1]
Run Code Online (Sandbox Code Playgroud)

预期的输出是:

[1
 2
 3]
Run Code Online (Sandbox Code Playgroud)

如何在 OpenCV 矩阵中设置值?

zed*_*edv 5

您正在访问错误的元素。正确的方法是:

cv::Mat point = cv::Mat(3, 1, CV_64FC1);
point.at<double>(0,0) = 1.0d;
point.at<double>(1,0) = 2.0d;
point.at<double>(2,0) = 3.0d;
Run Code Online (Sandbox Code Playgroud)

比这更简单:

double data[3] = {1.0d, 2.0d, 3.0d};
cv::Mat point = cv::Mat(3, 1, CV_64FC1, &data);
Run Code Online (Sandbox Code Playgroud)