Почему функция шумоподавления opencv не работает

Я новичок в opencv, поэтому, пожалуйста, извините меня, если мой вопрос глупый. В основном я возился с функциями opencv, чтобы изучить их работу, но одна из функций, то есть Photo.fastNlMeansDenoising(mat,mat);, не работает, я не понимаю, почему. Что касается ошибки, это показывает, что мы можем использовать только CV1,CV2 and CV3, который есть в моем случае, но все же я получаю сообщение об ошибке.

Я также попробовал этот ответ, но он не смог решить мою проблему.

Кто-нибудь может помочь мне решить эту проблему?

Код:

Mat tmp = new Mat (bitmap.getWidth(), bitmap.getHeight(), CvType.CV_8UC3);

            Utils.bitmapToMat(bitmap, tmp);


            Photo.fastNlMeansDenoising(tmp,tmp);


            Utils.matToBitmap(tmp,bitmap);

Ошибка:

 CvException [org.opencv.core.CvException: cv::Exception: /hdd2/buildbot/slaves/slave_ardbeg1/50-SDK/opencv/modules/photo/src/denoising.cpp:78: error: (-5) Unsupported image format! Only CV_8UC1, CV_8UC2 and CV_8UC3 are supported in function void cv::fastNlMeansDenoising(cv::InputArray, cv::OutputArray, float, int, int)
]
    at org.opencv.photo.Photo.fastNlMeansDenoising_0(Native Method)
    at org.opencv.photo.Photo.fastNlMeansDenoising(Photo.java:57)
    at opengl.community.myopencvexample.MainActivity$3.onClick(MainActivity.java:83)
    at android.view.View.performClick(View.java:4478)
    at android.view.View$PerformClick.run(View.java:18698)
    at android.os.Handler.handleCallback(Handler.java:733)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:149)
    at android.app.ActivityThread.main(ActivityThread.java:5257)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609)
    at dalvik.system.NativeStart.main(Native Method)

person anonymous    schedule 23.09.2018    source источник
comment
У меня это работает, проверьте, какой тип объекта Mat является tmp во время выполнения.   -  person unlut    schedule 24.09.2018
comment
@unlut большое спасибо за ваше предложение, но как это сделать? и даже если я это проверю, как я могу это изменить   -  person anonymous    schedule 24.09.2018
comment
Возможный дубликат Почему fastNlMeansDenoisingColored() из openCV выдает ошибку?   -  person Cris Luengo    schedule 24.09.2018


Ответы (1)


Попробуйте обновить свою библиотеку, и ваша проблема будет решена, если вы используете 2.x, а затем обновите ее до opencv 3.0.

person coder    schedule 24.09.2018
comment
Если два вопроса имеют одинаковые ответы, они дублируются. Вместо того, чтобы дублировать ответ, отметьте вопрос как дубликат. Спасибо! - person Cris Luengo; 24.09.2018