分配像素值时出现分段错误

时间:2017-06-15 12:48:42

标签: c++ opencv

以下代码会导致分段错误。

void sharpen(Mat& src, Mat& dst)
{
   cout<<"\n\nFunction just called\n\n";
   for (int i = 1; i < src.rows; i++)
   {
      for (int j = 1; j < src.cols; j++)
      {
         dst.at<uchar>(j, i) = 2*src.at<uchar>(j, i);
      }
   }

   imshow("src",src);
   imshow("dst",dst);
}

这有什么问题?

2 个答案:

答案 0 :(得分:1)

Dst和Source imgs必须具有相同的大小。 你可以通过做这样的事情来解决它

Mat sharpen(Mat src)

{

Mat dst = src.clone();
dst = 2*src;

imshow("src",src);
imshow("dst",dst);

return dst;


}

答案 1 :(得分:1)

您交换行和列see here on SO。使用dst.at<uchar>(i, j)=2*src.at<uchar>(i, j);,注意差异(i, j)

Mat班级(row, column)和点班级(columns, row)

同时检查矩阵的维度,因为您使用src的大小来循环srcdst,因此维度应该相等。进一步在0处启动索引变量,因为在C / C ++中,您从0计算。