【发布时间】:2018-05-29 14:22:23
【问题描述】:
我使用的是opencv 3.2ver,在我的代码中,它有一些错误 这是我的错误代码:
"CV_DbgAssert((无符号)(i1 * DataType<_tp>::channels)
binary_Mat[0] = Mat_Sum(image, i, j - 3); 导致错误。
请告诉我问题是什么
int Mat_Sum(Mat& image, int i, int j)
{
int sum = image.at<uchar>(i-1, j-1) + image.at<uchar>(i-1, j) + image.at<uchar>(i-1, j+1) +
image.at<uchar>(i, j-1) + image.at<uchar>(i, j) + image.at<uchar>(i, j+1) +
image.at<uchar>(i+1, j-1) + image.at<uchar>(i+1, j) + image.at<uchar>(i+1, j+1);
return sum / 9;
}
int main()
{
Mat image0 = imread("rena.jpg");
Mat image;
cvtColor(image0, image, CV_BGR2GRAY);
const int width = image.rows;
const int height = image.cols;
Mat result_img = image.clone();
int binary_Mat[8];
for (int i = 3; i < height - 3; i++)
{
for (int j = 3; j < width - 3; j++)
{
result_img.at<uchar>(i, j) = 0;
binary_Mat[0] = Mat_Sum(image, i, j - 3);
binary_Mat[1] = Mat_Sum(image, i + 3, j - 3);
binary_Mat[2] = Mat_Sum(image, i + 3, j);
binary_Mat[3] = Mat_Sum(image, i + 3, j + 3);
binary_Mat[4] = Mat_Sum(image, i, j + 3);
binary_Mat[5] = Mat_Sum(image, i - 3, j + 3);
binary_Mat[6] = Mat_Sum(image, i - 3, j);
binary_Mat[7] = Mat_Sum(image, i - 3, j - 3);
int criterion = Mat_Sum(image, i, j);
for (int k = 0; k < 8; k++) {
if (binary_Mat[k] > criterion)
binary_Mat[k] = 1;
else
binary_Mat[k] = 0;
}
int decimal = 0;
for (int k = 0; k < 8; k++)
decimal += binary_Mat[k] * pow(2, 8 - k);
result_img.at<uchar>(i, j) = decimal;
}
}
return 0;
}
【问题讨论】:
-
我建议将您的错误放在代码格式化块中以提高可读性。