एक छवि में क्षैतिज रेखाओं को हटाने के लिए, हम निम्नलिखित कदम उठा सकते हैं -
- स्थानीय चित्र पढ़ें।
- इमेज को एक कलर स्पेस से दूसरे कलर स्पेस में बदलें।
- प्रत्येक सरणी तत्व के लिए एक निश्चित-स्तरीय सीमा लागू करें।
- रूपात्मक संचालन के लिए निर्दिष्ट आकार और आकार का एक संरचनात्मक तत्व प्राप्त करें।
- उन्नत रूपात्मक परिवर्तन करें।
- बाइनरी इमेज में कंटूर ढूंढें.
- चरण 4 को विभिन्न कर्नेल आकार के साथ दोहराएं।
- चरण 7 से नए कर्नेल के साथ चरण 5 को दोहराएं।
- परिणामी छवि दिखाएं।
उदाहरण
import cv2 image = cv2.imread('input_image.png') cv2.imshow('source_image', image) gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1] horizontal_kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (25, 1)) detected_lines = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, horizontal_kernel, iterations=2) cnts = cv2.findContours(detected_lines, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) cnts = cnts[0] if len(cnts) == 2 else cnts[1] for c in cnts: cv2.drawContours(image, [c], -1, (255, 255, 255), 2) repair_kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (1, 6)) result = 255 - cv2.morphologyEx(255 - image, cv2.MORPH_CLOSE, repair_kernel, iterations=1) cv2.imshow('resultant image', result) cv2.waitKey() cv2.destroyAllWindows()
आउटपुट
ध्यान दें कि हमारे source_image में क्षैतिज रेखाएं अब resultant_image में दिखाई नहीं देती हैं।