尝试设置cv::Mat的像素值时引发分段错误

Segmentation fault thrown when trying to set pixels values of cv::Mat

本文关键字:错误 分段 设置 cv Mat 像素      更新时间:2023-10-16

我的代码:

int main()
{
    cv::Mat origin = cv::imread("../resources/Slide2.JPG");
    for(int c = 0; c != origin.cols; ++c)
        for(int r = 0; r != origin.rows; ++r)
            origin.at<cv::Vec3b>(c,r) = {3,3,3};
    cv::imshow("test",origin);
    cv::waitKey();
    return 0;
}

图像文件

调试时卡在mat.hpp:中的Mat::release()

inline void Mat::release()
{
    if( refcount && CV_XADD(refcount, -1) == 1 )
        deallocate();
    data = datastart = dataend = datalimit = 0;
    size.p[0] = 0;
    refcount = 0;
}

这是怎么回事?如何修复?

您必须在.at()调用中切换rc

origin.at<cv::Vec3b>(r, c) = {3,3,3};