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

Python प्रोग्राम: OpenCV का उपयोग करके इमेज के एज डिटेक्ट करना

इस समस्या में, हम देखेंगे कि Python इमेज या वीडियो फ़ाइल के एज कैसे डिटेक्ट कर सकता है। इसे प्राप्त करने के लिए, हमें OpenCV लाइब्रेरी की आवश्यकता है। OpenCV लाइब्रेरी मुख्य रूप से कंप्यूटर विजन के लिए डिज़ाइन की गई है। यह ओपन सोर्स है। मूल रूप से इसे इंटेल द्वारा डिज़ाइन किया गया था। यह ओपन-सोर्स BSD लाइसेंस के तहत उपयोग के लिए मुफ़्त है।

OpenCV कार्यक्षमता का उपयोग करने के लिए, हमें pip का उपयोग करके इसे डाउनलोड करना होगा। OpenCV Numpy मॉड्यूल भी डाउनलोड करेगा। उसकी भी आवश्यकता होगी।

sudo pip3 install opencv-python

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

यहां हम एक वीडियो फ़ाइल का उपयोग कर रहे हैं। वास्तविक इमेज (वीडियो का फ्रेम) इस तरह है:

Python प्रोग्राम: OpenCV का उपयोग करके इमेज के एज डिटेक्ट करना

एज डिटेक्शन कैसे काम करता है?

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

हमें अपनी इमेज के ग्रेस्केल वर्जन के लिए ग्रेडिएंट खोजने की आवश्यकता है। कंप्यूटर विजन में, जब पिक्सल्स ब्लैक से व्हाइट की ओर ट्रांजिशन कर रहे होते हैं, तो इसे पॉजिटिव स्लोप के रूप में नोट किया जाता है। व्हाइट से ब्लैक ट्रांजिशन के लिए, यह नेगेटिव स्लोप है।

इमेज के डेरिवेटिव का उपयोग करके एज डिटेक्शन

एक इमेज मैट्रिक्स के रूप में स्टोर होती है, जहां उस मैट्रिक्स का प्रत्येक एलिमेंट सभी पिक्सल्स के बारे में जानकारी रखता है। डेरिवेशन खोजने के लिए हमें लाप्लासियन ऑपरेटर की आवश्यकता होती है। तो लाप्लासियन प्राप्त करने के लिए, पहले हमें सोबेल डेरिवेटिव्स की आवश्यकता होती है। ये सोबेल डेरिवेटिव्स इमेज के ग्रेडिएंट वेरिएशन को प्राप्त करने के लिए उपयोग किए जाते हैं।

हॉरिजॉन्टल सोबेल डेरिवेटिव (Sobel X)

यह सोबेल डेरिवेटिव वास्तविक इमेज और दूसरे मैट्रिक्स (जिसे कर्नेल कहा जाता है) के कन्वोल्यूशन के माध्यम से प्राप्त होता है। कर्नेल सरल मामले के लिए 3x3 मैट्रिक्स है।

sobel() नामक एक फ़ंक्शन है। इस फ़ंक्शन का उपयोग करके, हम सोबेल डेरिवेटिव्स खोज सकते हैं। जब हम सोबेल X प्राप्त करने का प्रयास कर रहे होते हैं, तो Y भाग 0 होना चाहिए।

उदाहरण कोड - Sobel X

import cv2
import numpy as np
capture = cv2.VideoCapture('sample_video.mp4')
while(capture.isOpened()):
    ret, frame = capture.read()
    hsv_col = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
    # Sobel X मेथड
    sobelx = cv2.Sobel(frame, cv2.CV_64F, 1, 0, ksize=5)
    cv2.imshow('SobelX', sobelx)
    k = cv2.waitKey(5) & 0xFF
    if k == 27:  # 27 ESC की का ASCII है। जब ESC दबाया जाता है, तो यह रुक जाएगा
        break
capture.release()
cv2.destroyAllWindows()

आउटपुट

Python प्रोग्राम: OpenCV का उपयोग करके इमेज के एज डिटेक्ट करना

वर्टिकल सोबेल डेरिवेटिव (Sobel Y)

इसी तरह हम sobel() फ़ंक्शन का उपयोग करके वर्टिकल सोबेल डेरिवेटिव खोज सकते हैं। इस मामले में X भाग 0 होगा।

उदाहरण कोड - Sobel Y

import cv2
import numpy as np
capture = cv2.VideoCapture('sample_video.mp4')
while(capture.isOpened()):
    ret, frame = capture.read()
    hsv_col = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
    # Sobel Y मेथड
    sobely = cv2.Sobel(frame, cv2.CV_64F, 0, 1, ksize=5)
    cv2.imshow('SobelY', sobely)
    k = cv2.waitKey(5) & 0xFF
    if k == 27:
        break
capture.release()
cv2.destroyAllWindows()

आउटपुट

Python प्रोग्राम: OpenCV का उपयोग करके इमेज के एज डिटेक्ट करना

लाप्लासियन डेरिवेटिव

अंत में हम इमेज के लाप्लासियन डेरिवेटिव को देखेंगे। Laplacian() नामक एक फ़ंक्शन है। इसका उपयोग डेरिवेटिव प्राप्त करने के लिए किया जाता है।

उदाहरण कोड - लाप्लासियन

import cv2
import numpy as np
capture = cv2.VideoCapture('sample_video.mp4')
while(capture.isOpened()):
    ret, frame = capture.read()
    hsv_col = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
    # लाप्लासियन मेथड
    laplacian = cv2.Laplacian(frame, cv2.CV_64F)
    cv2.imshow('Laplacian', laplacian)
    k = cv2.waitKey(5) & 0xFF
    if k == 27:
        break
capture.release()
cv2.destroyAllWindows()

आउटपुट

Python प्रोग्राम: OpenCV का उपयोग करके इमेज के एज डिटेक्ट करना
  1. पायथन का उपयोग करके छवियों को पढ़ना पायथन का उपयोग करके छवियों को पढ़ना

    ओपनसीवी (OpenCV) का उपयोग करके छवि प्रसंस्करण ओपनसीवी (ओपन सोर्स कंप्यूटर विजन) एक ओपन सोर्स प्रोग्रामिंग लाइब्रेरी है जिसे मूल रूप से मशीन लर्निंग और कंप्यूटर विजन के लिए विकसित किया गया है। यह कंप्यूटर विजन अनुप्रयोगों पर काम करने के लिए सामान्य बुनियादी ढांचा प्रदान करता है और वाणिज्यिक उत्पादों

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

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

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

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