मेरे पास तालिका में पृष्ठों की कुछ छवियां हैं। मैं छवियों से छवियों को फसल करना चाहता हूं। आम तौर पर, पृष्ठ छवि में सबसे बड़ा आयताकार होगा, हालांकि आयत के सभी चार पक्ष कुछ मामलों में दिखाई नहीं दे सकते हैं।छवि के बाहर सबसे बड़ा आयत कैसे फसल करें
मैं निम्नलिखित लेकिन नहीं मिल रहा है वांछित परिणाम कर रहा हूँ:
1 उदाहरण:: मैं इस छवि में आयत पा सकते हैं, हालांकि, चाहते हैं
import cv2
import numpy as np
im = cv2.imread('images/img5.jpg')
gray=cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
ret,thresh = cv2.threshold(gray,127,255,0)
_,contours,_ = cv2.findContours(thresh,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)
areas = [cv2.contourArea(c) for c in contours]
max_index = np.argmax(areas)
cnt=contours[max_index]
x,y,w,h = cv2.boundingRect(cnt)
cv2.rectangle(im,(x,y),(x+w,y+h),(0,255,0),2)
cv2.imshow("Show",im)
cv2.imwrite("images/img5_rect.jpg", im)
cv2.waitKey(0)
नीचे कुछ उदाहरण हैं अगर लकड़ी के शेष हिस्से को भी बाहर निकाल दिया जा सकता है।
2 उदाहरण: इस छवि में आयत का सही आयाम नहीं मिल।
3 उदाहरण: इस छवि में सही आयाम खोजने के लिए या तो असमर्थ।
4 उदाहरण: इस रूप में अच्छी तरह के साथ भी यही।
यह समस्या काफी के बाद से न तो लकड़ी रंग और न ही कागजात ही रंग के हैं करने के लिए कठिन है .... मैं क्या मतलब है, कि सीमा है इस एल्गोरिथ्म में समस्या ... जब से तुम आकृति पा रहे हैं है इस दहलीज के बाद ... मैं या तो रंगीन छवियों में लकड़ी की तरह रंगों को थ्रेसहोल्ड करने की कोशिश करता हूं, या एक अलग दृष्टिकोण का प्रयास करता हूं। आप कुछ किनारे डिटेक्टर को कैनी की तरह कोशिश कर सकते हैं (जिसमें पहले से ही कुछ थ्रेसहोल्डिंग है) और उसके बाद findcontours करें। – api55