मेरे पास निम्न चित्र है और मैं पृष्ठ की सीमा का पता लगाना चाहता हूं और फिर पृष्ठ को "केवल" देखने के लिए फिर से फोकस करना चाहता हूं। मैं इसे opencv3 और Python 3 के साथ कैसे कोड करना शुरू कर सकता हूं?

enter image description here

1
projetmbc 18 अप्रैल 2020, 18:38

1 उत्तर

सबसे बढ़िया उत्तर

आप कागज को पृष्ठभूमि से अलग करने के लिए बस थ्रेशोल्डिंग विधियों का उपयोग कर सकते हैं। प्रदर्शन करना:

छवि पढ़ें और ग्रे में कनवर्ट करें।

image = cv2.imread("page.jpg")
gray_image = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)

थ्रेशोल्ड मान चुनने के लिए हिस्टोग्राम की जाँच करें। अधिक यहां

color = ('b','g','r')
fig = plt.figure(figsize=(12,12))
ax = fig.add_subplot(1,2,1)
ax.imshow(image)
ax1 = fig.add_subplot(1,2,2)
for i,col in enumerate(color):
    histogram = cv2.calcHist([image],[i],None,[256],[0,256])
    ax1.plot(histogram,color = col)
    ax1.set_xlim([0,256])

नोटबुक के विवरण से छुटकारा पाने के लिए ब्लर का उपयोग करें।

blurred_gray_image = cv2.blur(gray_image,(21,21))

थ्रेसहोल्डिंग करें। हिस्टोग्राम से प्राप्त मूल्यों का उपयोग करना।

_,thresholded_blurry_image = cv2.threshold(blurred_gray_image,165,255,cv2.THRESH_BINARY)

समोच्च (जो अविभाजित, बंद आकार हैं) का पता लगाएं।

contours, hierarchy = cv2.findContours(thresholded_blurry_image,
cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

यदि कोई आकृति हो तो मूल छवि की प्रतिलिपि के लिए सबसे बड़े समोच्च की रूपरेखा बनाएं।स्रोत सबसे बड़ा समोच्च खोजने के लिए पोस्ट करें।

output = image.copy()
if len(contours) != 0:
    c = max(contours, key = cv2.contourArea)
    # coordinates of the contour
    x,y,w,h = cv2.boundingRect(c)
    cv2.rectangle(output,(x,y),(x+w,y+h),(0,255,0),2)

परिणाम दिखाओ

output = cv2.cvtColor(output,cv2.COLOR_BGR2RGB)
plt.imshow(output)

Output

आप छवि को सहेजने के लिए cv2.imwrite() फ़ंक्शन का उपयोग कर सकते हैं। आशा है कि यह उत्तर आपके प्रश्न को संतुष्ट करता है। लेकिन ध्यान रखें कि यह विधि हमेशा काम नहीं करेगी क्योंकि हम स्वयं हिस्टोग्राम का मूल्यांकन करते हैं और थ्रेसहोल्डिंग मानों को हाथ से चुनते हैं। यदि आप अधिक सामान्य दृष्टिकोण अपनाना चाहते हैं तो adaptive thresholding आज़माएं या एल्गोरिथम की सहायता से हिस्टोग्राम मानों का मूल्यांकन करें। शुभकामनाएँ।

2
Meto 24 अप्रैल 2020, 19:41