OpenCV Android - error on match template -
i've seen questions here related error such this , this , know can't execute imgproc.matchtemplate() method if image , template don't have same datatype. i'm still confused on how know type of mat i'm using.
below code adapted example here:
for (int = 0; < 24; i++) { arrdraw[i] = getresources().getidentifier("let" + i, "drawable", getpackagename()); } mat mimage = input.submat(bigrect); (int = 0; < 24; i++) { mat mtemplate = utils.loadresource(this, arrdraw[i], highgui.cv_load_image_color); mat mresult = new mat(mimage.rows(), mimage.cols(), cvtype.cv_32fc1); imgproc.matchtemplate(mimage, mtemplate, mresult, match_method); core.normalize(mresult, mresult, 0, 1, core.norm_minmax, -1, new mat()); ... // further process } so i'm trying take mimage submat of inputframe , match template process 24 other pictures , decide has best value (either lowest or highest). yet error shows this.
opencv error: assertion failed ((img.depth() == cv_8u || img.depth() == cv_32f) && img.type() == templ.type()) in void cv::matchtemplate(cv::inputarray, cv::inputarray, cv::outputarray, int), file /home/reports/ci/slave_desktop/50-sdk/opencv/modules/imgproc/src/templmatch.cpp, line 249 i tried initialize mimage , mtemplate first same type still no luck. advice? before.
the error telling image , template have different types.
assertion failed ... img.type() == templ.type() .... i'd willing bet (a small amount) mtemplate cv_8uc3 bgr ordered.
from code posted, it's not possible tell mimage's type though if it's extracted camera frame, , if did :
public mat oncameraframe(cvcameraviewframe inputframe) { mat inputframe = inputframe.rgba(); .... } then it's cv_8uc4 bgra ordered. not same type.
also, i'm not sure behaviour of submat() 1 3d or 4d input matrix, think it's designed operate on 2d matrices may find returns either 2d matrix (cv_8uc2) or undefined weirdness.
i'd suggest try dumping type() , depth() or both image , template before matchtemplate( ... ) call.
Comments
Post a Comment