我想在不使用multiply()函數的情況下乘兩個Mat類型A和B(灰色縮放)。到目前爲止,我開發了下面的代碼,它不起作用。我檢查了它的工作的乘法(A,B,AB)函數,但下面的代碼不起作用。如何乘以墊子A * B?
Mat A,B,AB, src;
float AB_yx;
src = imread("as.jpg", CV_LOAD_IMAGE_GRAYSCALE);
Sobel(src , A, CV_32FC1 , 1, 0, 3, BORDER_DEFAULT);
Sobel(src , B, CV_32FC1 , 0, 1, 3, BORDER_DEFAULT);
// multiply(A, B, AB); //worked
AB= src.clone();
for (int y = 0; y < A.rows; y++) {
for (int x = 0; x < B.cols; x++) {
AB_yx= 0;
for (int y = 0; y < B.rows; y++) {
// for (int k = 0; k < B.rows; k++) {
AB.at<float>(y, x) = A.at<float>(y, x) * B.at<float>(y, x); //sturkmen's method
//AB_yx = AB_yx + A.at<float>(y, k) * B.at<float>(k, x);//
}
//AB.at<float>(y, x) = AB_yx;
}
}
namedWindow("AB");
imshow("AB", AB);
問題視覺工作室給中止()被調用
OpenCV Error: Assertion failed (((((sizeof(size_t)<<28)|0x8442211) >> ((DataType<_Tp>::depth) & ((1 << 3) - 1))*4) & 15) == elemSize1()) in cv::Mat::at, file d:\opencv\opencv\build\include\opencv2\core\mat.inl.hpp, line 957
「下面的代碼沒有工作「 你可以說得更詳細點嗎? – DimChtz
你知道如何乘以矩陣嗎? – jxh
您編寫的代碼執行每個成員的乘法,而不是矩陣乘法。這是完全錯誤的算法。 – Frank