J'essaie de charger une image à partir d'un fichier en tant que CvMat (comme mat1) et en essayant de créer une autre matrice (mat2) de même taille que le fichier en cours de lecture et d'essayer soustraire la valeur moyenne de la matrice originale (mat1) et essayer d'insérer la valeur dans la nouvelle matrice (mat2) mais malheureusement, je reçois une erreur. Quelqu'un peut-il me dire pourquoi? J'utilise C API dans OpenCV. Ce qui suit est le codecopier une taille de matrice d'image à une autre matrice dans OpenCV
CvMat* mat1 = cvLoadImageM(argv[2], CV_LOAD_IMAGE_UNCHANGED); // load an image from a file as a CvMat
CvMat* mat2 = cvCreateMat(mat1->width, mat1->height, CV_32FC1); // trying to create a matrix as same width and height as the image file being loaded.
CvScalar avg = cvAvg(mat1); // calculating the avg of all elements of matrix
cvSubS(mat1, avg, mat2); // subtracting the average value from the original matrix and inserting the new values to matrix mat2
L'erreur est
OpenCV Error: Assertion failed (src1.size == dst.size && src1.channels() == dst.channels()) in cvAddS, file /home/Documents/opencv-2.4.5/modules/core/src/arithm.cpp, line 2783 terminate called after throwing an instance of 'cv::Exception' what(): /homeDocuments/opencv-2.4.5/modules/core/src/arithm.cpp:2783: error: (-215) src1.size == dst.size && src1.channels() == dst.channels() in function cvAddS
Est-ce que votre mat1.type CV_32FC1? – William
@ William Je ne sais pas. J'essaie juste de le charger à partir d'un fichier image. Savez-vous comment puis-je vérifier son type? Les valeurs de mat1 sont 0 et -2 – user227666
Pouvez-vous essayer 'mat1-> type()' au lieu de 'CV_32FC1'? – JonesV