ऐसा इसलिए है क्योंकि आप छवि को जेपीजी के रूप में सहेज रहे हैं। ऐसा करने पर ओपनसीवी छवि को संपीड़ित करेगा। इसे पीएनजी या बीएमपी के रूप में सहेजने का प्रयास करें और कोई अंतर मौजूद नहीं होगा।
हालांकि, महत्वपूर्ण सवाल: मैं जेपीजी के रूप में छवि लोड कर रहा हूँ और जेपीजी के रूप में सहेजने। तो, एक अंतर कैसे है ?!
हां, ऐसा इसलिए है क्योंकि जेपीजी के लिए कई समान संपीड़न/डिकंप्रेशन एल्गोरिदम नहीं हैं।
आप प्राप्त करने के लिए में कुछ विवरण इस सवाल को देखने चाहते हैं: Reading jpg file in OpenCV vs C# Bitmap
संपादित करें: आप देख सकते हैं मैं वास्तव में यहाँ क्या मतलब है:
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);
परिणाम: [0.576 9 38, 0.466718, 0.495106, 0]
स्रोत
2015-10-15 08:07:34
पढ़ने और लिखने का कोड प्रदान करें .. आप शायद इसे जेपीईजी –
@ हूमहल्फावी प्लज़ कोड के रूप में लिख सकते हैं। – zindarod
हानिकारक और हानि रहित संपीड़न के अंतर में आपका स्वागत है। 100% समान छवि डेटा प्राप्त करने के लिए '.png' या अन्य हानि रहित संपीड़न तकनीक के रूप में सहेजें। – Micka