Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

Python में OpenCV का उपयोग करके टेम्पलेट मैचिंग

टेम्पलेट मैचिंग एक तकनीक है, जिसके द्वारा एक पैच या टेम्पलेट को वास्तविक इमेज से मैच किया जा सकता है। यह मूल रूप से एक पैटर्न मैचिंग तंत्र है।

Python में OpenCV मॉड्यूल है। OpenCV का उपयोग करके, हम आसानी से मैच ढूंढ सकते हैं। तो इस समस्या में, OpenCV टेम्पलेट मैचिंग तकनीकों का उपयोग किया जाता है।

OpenCV कार्यक्षमता का उपयोग करने के लिए, हमें pip का उपयोग करके इसे डाउनलोड करना होगा।

sudo pip3 install opencv-python

टेम्पलेट मैचिंग टास्क के लिए, एक सटीकता कारक होता है, जिसे थ्रेशोल्ड के रूप में जाना जाता है। उदाहरण के लिए, हम कह सकते हैं कि हम इस टेम्पलेट मैचिंग समाधान का उपयोग करके आसानी से फेस रिकग्निशन स्कीम बना सकते हैं। हम आंखों या चेहरे के किसी अन्य भाग की कुछ इमेज प्रदान कर सकते हैं, फिर उन इमेज को टेम्पलेट के रूप में उपयोग करके, यह आसानी से मैच ढूंढ सकता है, लेकिन आंखों में अलग-अलग वेरिएशन्स हैं। इसलिए यदि हम सटीकता स्तर को 50% पर सेट करते हैं, तो यह 100% सटीकता स्तर से बेहतर डिटेक्ट करेगा। आमतौर पर, विभिन्न मामलों में सटीकता स्तर 80% होता है।

टेम्पलेट्स मैच करने के चरण

  • वास्तविक इमेज लें और इसे ग्रेस्केल इमेज में कन्वर्ट करें।
  • टेम्पलेट को ग्रेस्केल इमेज के रूप में लें।
  • टेम्पलेट वास्तविक इमेज पर स्लाइड करता है और वह स्थान ढूंढता है जहां सटीकता स्तर मेल खाता है।
  • जब परिणाम सटीकता स्तर से अधिक या बराबर होता है, तो उस स्थिति को डिटेक्टेड के रूप में मार्क करें।

पहले मामले के लिए इनपुट इमेज और टेम्पलेट हैं:

मुख्य इमेज

Python में OpenCV का उपयोग करके टेम्पलेट मैचिंग

टेम्पलेट

Python में OpenCV का उपयोग करके टेम्पलेट मैचिंग

उदाहरण कोड - बेसिक टेम्पलेट मैचिंग

import cv2
import numpy as np
# मुख्य इमेज खोलें और इसे ग्रेस्केल इमेज में कन्वर्ट करें
main_image = cv2.imread('main_image.png')
gray_image = cv2.cvtColor(main_image, cv2.COLOR_BGR2GRAY)
# टेम्पलेट को ग्रेस्केल इमेज के रूप में खोलें
template = cv2.imread('template1.png', 0)
width, height = template.shape[::-1]  # चौड़ाई और ऊंचाई प्राप्त करें
# cv2.matchTemplate का उपयोग करके टेम्पलेट मैच करें
match = cv2.matchTemplate(gray_image, template, cv2.TM_CCOEFF_NORMED)
threshold = 0.8
position = np.where(match >= threshold)  # इमेज में टेम्पलेट का स्थान प्राप्त करें
for point in zip(*position[::-1]):
    # मैच्ड टेम्पलेट के चारों ओर रेक्टेंगल ड्रा करें
    cv2.rectangle(main_image, point, (point[0] + width, point[1] + height), (0, 204, 153), 0)
cv2.imshow('Template Found', main_image)
cv2.waitKey(0)

आउटपुट

Python में OpenCV का उपयोग करके टेम्पलेट मैचिंग

उपरोक्त कोड मल्टी-स्केलिंग को सपोर्ट नहीं करता। इसलिए यदि टेम्पलेट का आकार समान नहीं है, तो यह डिटेक्ट नहीं करेगा। तो अगले भाग में, हम देखेंगे कि मल्टी-स्केलिंग फीचर का उपयोग करके टेम्पलेट्स को कैसे डिटेक्ट किया जा सकता है।

इस दृष्टिकोण में, वास्तविक इमेज को हर बार अलग-अलग आकार में कन्वर्ट किया जाता है, यह पैटर्न से मैच करता है, और मैचों का पता लगाने के लिए सबसे बड़े सहसंबंध गुणांक को ढूंढता है।

यहां वास्तविक इमेज समान है, टेम्पलेट यहां है:

Python में OpenCV का उपयोग करके टेम्पलेट मैचिंग

उदाहरण कोड - मल्टी-स्केल टेम्पलेट मैचिंग

import imutils
import cv2
import numpy as np
# टेम्पलेट खोलें और कैननी प्राप्त करें
template = cv2.imread('template3.jpg')
template = cv2.cvtColor(template, cv2.COLOR_BGR2GRAY)
template = cv2.Canny(template, 10, 25)
(height, width) = template.shape[:2]
# मुख्य इमेज खोलें और इसे ग्रेस्केल इमेज में कन्वर्ट करें
main_image = cv2.imread('main_image.png')
gray_image = cv2.cvtColor(main_image, cv2.COLOR_BGR2GRAY)
temp_found = None
for scale in np.linspace(0.2, 1.0, 20)[::-1]:
    # इमेज को रिसाइज़ करें और अनुपात स्टोर करें
    resized_img = imutils.resize(gray_image, width=int(gray_image.shape[1] * scale))
    ratio = gray_image.shape[1] / float(resized_img.shape[1])
    if resized_img.shape[0] < height or resized_img.shape[1] < width:
        break
    # चेकिंग के लिए एज्ड इमेज में कन्वर्ट करें
    e = cv2.Canny(resized_img, 10, 25)
    match = cv2.matchTemplate(e, template, cv2.TM_CCOEFF)
    (_, val_max, _, loc_max) = cv2.minMaxLoc(match)
    if temp_found is None or val_max > temp_found[0]:
        temp_found = (val_max, loc_max, ratio)
# x,y कोऑर्डिनेट की गणना के लिए temp_found से जानकारी प्राप्त करें
(_, loc_max, r) = temp_found
(x_start, y_start) = (int(loc_max[0]), int(loc_max[1]))
(x_end, y_end) = (int((loc_max[0] + width)), int((loc_max[1] + height)))
# टेम्पलेट के चारों ओर रेक्टेंगल ड्रा करें
cv2.rectangle(main_image, (x_start, y_start), (x_end, y_end), (153, 22, 0), 5)
cv2.imshow('Template Found', main_image)
cv2.waitKey(0)

आउटपुट

Python में OpenCV का उपयोग करके टेम्पलेट मैचिंग
  1. Python OpenCV मॉड्यूल का उपयोग करके हिस्टोग्राम इक्वलाइज़ेशन Python OpenCV मॉड्यूल का उपयोग करके हिस्टोग्राम इक्वलाइज़ेशन

    यह इमेज प्रोसेसिंग में एक विधि है जो इमेज के हिस्टोग्राम का उपयोग करके कंट्रास्ट एडजस्टमेंट करती है। वास्तव में यह विधि आमतौर पर कई इमेजेस के ग्लोबल कंट्रास्ट को बढ़ाती है, विशेष रूप से जब इमेज का उपयोग योग्य डेटा क्लोज कंट्रास्ट वैल्यूज़ द्वारा दर्शाया जाता है और इस एडजस्टमेंट के माध्यम से, इंटेंसि

  1. पायथन OpenCV मॉड्यूल का उपयोग करके छवियों पर ज्यामितीय आकृतियाँ बनाना पायथन OpenCV मॉड्यूल का उपयोग करके छवियों पर ज्यामितीय आकृतियाँ बनाना

    OpenCV के बुनियादी संचालन में छवियों पर ड्राइंग करना शामिल है। रेखाएँ, वृत्त और आयत आदि जैसी विभिन्न ज्यामितीय आकृतियों को जोड़ने की क्षमता। अक्सर छवि विश्लेषण के साथ काम करते समय, हम छवि के एक हिस्से को हाइलाइट करना चाहते हैं, उदाहरण के लिए उस हिस्से को परिभाषित करने वाला एक आयत जोड़कर। साथ ही किस

  1. पायथन OpenCV का उपयोग करके वीडियो को रिवर्स मोड में चलाना पायथन OpenCV का उपयोग करके वीडियो को रिवर्स मोड में चलाना

    OpenCV का पूरा नाम ओपन सोर्स कंप्यूटर विजन है, इस लाइब्रेरी का उपयोग करके हम छवियों, वीडियो पर विभिन्न ऑपरेशन कर सकते हैं। OpenCV के अनुप्रयोग क्षेत्र चेहरा पहचान प्रणाली मोशन ट्रैकिंग कृत्रिम तंत्रिका नेटवर्क डीप न्यूरल नेटवर्क वीडियो स्ट्रीमिंग आदि। विंडोज पर स्थापित करने के लिए हम इस कमांड लाइ