bonjour,
voila j'ai récupéré le code en C++ de opencv sur le Laplacian et le code améliore la netteté de mon image. J'ai donc repris le code en remplacant la méthode du Laplacian par mon petit code à moi. Or ca ne marche plus, la netteté n'est pas du tout amélioré. J'en déduit que mon algo est faux mais je ne vois pas ou je me suis trompé. Avez vous une idée? voici mon code :
Merci d'avance pour votre aideCode:#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; int main(void) { Mat m1, m2, m3, m4; Mat agx, agy; cv::VideoCapture cam(0); do { cv::Mat img; cam >> img; cv::cvtColor(img, m1, cv::COLOR_BGR2GRAY); cv::pyrDown(m1,m1); imshow("video", m1); cv::blur(m1, m2, cv::Size(3,3)); imshow("blur", m2); Mat laplacien; //cv::Laplacian(m2,laplacien, CV_32F, 3); //code perso qui remplace la methode du cv::Laplacian Mat m2dx, m2dy; cv::Sobel(m2, m2dx, CV_32F, 1, 0); cv::Sobel(m2, m2dy, CV_32F, 0, 1); cv::magnitude(m2dx, m2dy, laplacien); cv::Sobel(laplacien, m2dx, CV_32F, 1, 0); cv::Sobel(laplacien, m2dy, CV_32F, 0, 1); cv::magnitude(m2dx, m2dy, laplacien); //fin du code perso qui remplace la methode du cv::Laplacian //m3 = m1 - 0.3 * laplacien m2.convertTo(agx, CV_32F); agy = agx - 0.3* laplacien; agy.convertTo(agy, CV_8UC3); imshow("plus net", agy); } while(((char) waitKey(20)) == -1); return 0; }
-----