Quantcast
Channel: OpenCV Q&A Forum - RSS feed
Viewing all articles
Browse latest Browse all 322

why are mat operators seeing wrong type?

$
0
0
I'm at a loss here, why does my code crash with the error: OpenCV Error: Assertion failed (type == B.type() && (type == CV_32FC1 || type == CV_64FC1 || type == CV_32FC2 || type == CV_64FC2)) in cv::gemm, file C:\build\master_winpack-build-win64-vc14\opencv\modules\core\src\matmul.cpp, line 1530 Below is basically what I'm trying to do, some lines may be unnecessary but I've been removing all assumptions about auto-allocation and matrix depths. Note, live_image comes into my function as "const Mat" with depth CV_16U. ... static Mat fused_image(live_image.rows, live_image.cols, live_image.type()); // this is my return Mat so same type Mat gain_map(live_image.rows, live_image.cols, CV_32F); // gain_map gets the result of a blur() divided by 255.0 ... if (frame == 1) { live_image.copyTo(fused_image); // initialize on first pass thru function, they have same type } // else fused_image is generated by the remaining function code and retained for the next frame iteration ... Mat flive_image(live_image.rows, live_image.cols, CV_32F); // declare my fp arrays Mat ffused_image(live_image.rows, live_image.cols, CV_32F); Mat fffused_image(live_image.rows, live_image.cols, CV_32F); Mat invgain_map(live_image.rows, live_image.cols, CV_32F); live_image.convertTo(flive_image, CV_32F); // should flive_image = live_image be equivalent? fused_image.convertTo(ffused_image, CV_32F); // ditto, should now have fp versions of ushort arrays invgain_map = -1.0 * gain_map + 1.0; // also tried "1.0 - gain_map;" as well as "gain_map.convertTo(invgain_map, -1, -1, 1);" fffused_image = ffused_image * invgain_map; // crashes on this line, also tried C=A.mul(B) and multiply(A, B, C) ... // note, fused_image would eventually be converted back to CV_16U from fffused_image after more matrix processing. ... As noted it crashes on the last multiply line. When I replace * with multiply() I get a different but related error: OpenCV Error: Bad argument (When the input arrays in add/subtract/multiply/divide functions have different types, the output array type must be explicitly specified) in cv::arithm_op, file C:\build\master_winpack-build-win64-vc14\opencv\modules\core\src\arithm.cpp, line 683 But how in the world can my types be different? I left nothing to chance. Thanks for any help.

Viewing all articles
Browse latest Browse all 322

Trending Articles