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

Segmentation fault while assigning a pixel value

本文关键字:分割 错误 像素 分配      更新时间:2023-10-16

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

void sharpen(Mat& src, Mat& dst)
{
   cout<<"nnFunction just callednn";
   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);
}

这有什么问题?

你交换行和列,请参阅此处 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 开始计数。

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

Mat sharpen(Mat src)
{
Mat dst = src.clone();
dst = 2*src;
imshow("src",src);
imshow("dst",dst);
return dst;

}