Dies liegt daran, dass Sie das Bild als JPG speichern. Wenn Sie dies tun, komprimiert OpenCV das Bild. versuchen, es als PNG oder BMP zu speichern, und kein Unterschied wird existieren.
jedoch die wichtige Frage: Ich bin das Bild als jpg Laden und als JPG speichern. Also, wie ist da ein Unterschied ?!
Ja, dies liegt daran, dass es viele nicht identische Komprimierungs-/Dekomprimierungsalgorithmen für JPG gibt.
, wenn Sie wollen, um in einige Details dieser Frage sehen: Reading jpg file in OpenCV vs C# Bitmap
EDIT: Sie können sehen, was ich meine genau hier:
auto bmp(cv::imread("c:/Testing/stack.bmp"));
cv::imwrite("c:/Testing/stack_OpenCV.jpg", bmp);
auto jpg_opencv(cv::imread("c:/Testing/stack_OpenCV.jpg"));
auto jpg_mspaint(cv::imread("c:/Testing/stack_mspaint.jpg"));
cv::imwrite("c:/Testing/stack_mspaint_opencv.jpg", jpg_mspaint);
jpg_mspaint=(cv::imread("c:/Testing/stack_mspaint_opencv.jpg"));
cv::Mat jpg_diff;
cv::absdiff(jpg_mspaint, jpg_opencv, jpg_diff);
std::cout << cv::mean(jpg_diff);
Das Ergebnis: [0,576938, 0,466718, 0,495106, 0]
Stellen Sie den Code zum Lesen und Schreiben .. Sie sind wahrscheinlich schreiben Sie es als JPEG –
@HumamHelfawi Plz den Code überprüfen. – zindarod
Willkommen zum Unterschied der verlustbehafteten und verlustfreien Komprimierung. Speichern Sie als '.png' oder eine andere verlustfreie Komprimierungstechnik, um 100% identische Bilddaten zu erhalten. – Micka