Yani, bir belgeyi yakalamak, taramak ve kırpmak için opencv kullanıyorum. Odada ışık olmadığında, mükemmel çalışır. Odada biraz ışık olduğunda ve masanın üzerinde bir parlama olduğunda ve belge buna yakın olduğunda, parıltı da dikdörtgenin bir parçası olarak yakalar.Fotoğraftan parlamayı kaldır opencv
Fotoğraftaki parlamayı nasıl kaldırabilirim?
buldum şeyler şunlardır: bahsediyoruz parlama im fotoğraf İşte
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);
edilir: Burada
istediğim görüntüyü elde etmek için kullanan kod im inRange'ı kullanmak için, rengi temizlemek için uygun skalerleri ve ışığı çıkarmak için boyaları bulduk. İşte bunun bir kod snippet'i, ancak her zaman 8 bitlik görüntüye ihtiyaç duyduğunu söyleyerek çöküyor.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);
Sen masaya parlama etkisini aşmak için çeşitli açılardan 3-4 anlık alarak deneyebilirsiniz. – ZdaR
Cevaplara cevap vermezseniz, bilmeniz zor olacaktır. –
Parlama, mercek parlaması giderme tekniklerine çok benzer ve basit bir şekilde, maksimum değere yakın hale getirmek için RGB renk uzayına eklenirler. Bunun dağılımı karmaşık olabilir ve arka planı olabildiğince gerçekçi tuttuğunuzdan emin olmak için bir uzaysal filtre kullanmanız gerekebilir. 3x3 matris setinden başladığınız ve ek parlama bileşenini çıkardığınız ve soğan kabuğu modasını merkeze doğru hareket ettirdiğiniz bu tür şeyler için bir soğan kabuğu yöntemi vardır. Parlama desenini takip edip onu takip edip etmediğini bulmak için onu çalıştırabilirsiniz. –