से चमक हटाएं तो, मैं दस्तावेज़ को कैप्चर करने, इसे स्कैन करने और इसे फसल करने के लिए opencv का उपयोग कर रहा हूं। कमरे में कोई प्रकाश नहीं होने पर, यह पूरी तरह से काम करता है। कमरे में कुछ प्रकाश होने पर, और मेज पर एक चमक है और दस्तावेज़ इसके पास है, यह आयताकार के हिस्से के रूप में चमक को पकड़ता है।फोटो opencv
कोई फ़ोटो से चमक कैसे हटा सकता है?
बातें हैं मैं पाया है:
Mat &image = *(Mat *) matAddrRgba;
Rect bounding_rect;
Mat thr(image.rows, image.cols, CV_8UC1);
cvtColor(image, thr, CV_BGR2GRAY); //Convert to gray
threshold(thr, thr, 150, 255, THRESH_BINARY + THRESH_OTSU); //Threshold the gray
vector<vector<Point> > contours; // Vector for storing contour
vector<Vec4i> hierarchy;
findContours(thr, contours, hierarchy, CV_RETR_CCOMP,
CV_CHAIN_APPROX_SIMPLE); // Find the contours in the image
sort(contours.begin(), contours.end(),
compareContourAreas); //Store the index of largest contour
bounding_rect = boundingRect(contours[0]);
rectangle(image, bounding_rect, Scalar(250, 250, 250), 5);
यहाँ के बारे में बात चमक im की एक तस्वीर है:
यहाँ छवि मैं चाहता हूँ प्राप्त करने के लिए का उपयोग कर कोड im है रेंज में उपयोग करने के लिए, रंग के लिए अनुचित स्केलर ढूंढें और हमें प्रकाश हटाने के लिए बाध्य करें। यहां एक कोड स्निपेट है, लेकिन यह हमेशा क्रैश करता है कि इसे चैनलों के साथ 8 बिट छवि की आवश्यकता है।
Mat &image = *(Mat *) matAddrRgba;
Mat hsv, newImage, inpaintMask;
cv::Mat lower_red_hue_range;
inpaintMask = Mat::zeros(image.size(), CV_8U);
cvtColor(image, hsv, COLOR_BGR2HSV);
cv::inRange(hsv, cv::Scalar(0, 0, 215, 0), cv::Scalar(180, 255, 255, 0),
lower_red_hue_range);
image = lower_red_hue_range;
inpaint(image, lower_red_hue_range, newImage, 3, INPAINT_TELEA);
आप विभिन्न कोणों से 3-4 स्नैपशॉट लेने की मेज पर चमक के प्रभाव को दूर करने के लिए के साथ की कोशिश कर सकते हैं। – ZdaR
यदि आप उत्तर देने का उत्तर नहीं देते हैं तो आपको पता होना मुश्किल होगा। –
चमक लेंस फ्लेयर हटाने तकनीकों के समान ही है और सरल शब्दों में वे अधिकतम मूल्य के करीब बनाने के लिए आरजीबी रंग स्थान में जोड़ते हैं। इसका वितरण जटिल हो सकता है और आपको यह सुनिश्चित करने के लिए एक स्थानिक फ़िल्टर का उपयोग करना पड़ सकता है कि आप जितना संभव हो सके पृष्ठभूमि को यथार्थवादी रखें। ऐसी चीजों के लिए एक प्याज छील विधि है जहां आप 3x3 मैट्रिक्स के सेट से शुरू करते हैं और अतिरिक्त चमक घटक को हटाते हैं और केंद्र के प्रति प्याज छील फैशन में स्थानांतरित करते हैं। आप यह देखने के लिए इसे चला सकते हैं कि क्या यह चमकदार पैटर्न का पालन करता है और इसे हटा देता है। –