এই সমস্যায়, আমরা দেখব কিভাবে পাইথন একটি ছবি বা ভিডিও ফাইলের প্রান্ত সনাক্ত করতে পারে। এটি অর্জন করতে, আমাদের OpenCV লাইব্রেরি প্রয়োজন। OpenCV লাইব্রেরি মূলত কম্পিউটার ভিশনের জন্য ডিজাইন করা হয়েছে। এটি ওপেন সোর্স। মূলত এটি ইন্টেল দ্বারা ডিজাইন করা হয়েছিল। এটি ওপেন সোর্স বিএসডি লাইসেন্সের অধীনে ব্যবহার করার জন্য বিনামূল্যে।
OpenCV কার্যকারিতা ব্যবহার করতে, আমাদের pip ব্যবহার করে সেগুলি ডাউনলোড করতে হবে OpenCV Numpy মডিউল ডাউনলোড করবে। এটিও প্রয়োজন হবে।
sudo pip3 install opencv-python
ইনপুট হিসাবে, এই ক্ষেত্রে, আমরা একটি ভিডিও ফাইল ব্যবহার করেছি। এই প্রান্ত সনাক্তকরণ পদ্ধতির রিয়েল-টাইম প্রভাব দেখতে আমরা আমাদের ওয়েবক্যামও ব্যবহার করতে পারি।
এখানে আমরা একটি ভিডিও ফাইল ব্যবহার করছি। প্রকৃত চিত্র (ভিডিওর ফ্রেম) এই রকম -
<কেন্দ্র>
কিভাবে এজ ডিটেকশন কাজ করে?
প্রান্তগুলি সনাক্ত করতে, পিক্সেলগুলির উজ্জ্বলতা স্বতন্ত্রভাবে পরিবর্তিত হচ্ছে কিনা তা পরীক্ষা করার জন্য কিছু গাণিতিক পর্যবেক্ষণ রয়েছে৷
আমাদের ছবির গ্রেস্কেল সংস্করণের জন্য গ্রেডিয়েন্ট খুঁজে বের করতে হবে। কম্পিউটার দৃষ্টিতে, যখন পিক্সেলগুলি কালো থেকে সাদাতে স্থানান্তরিত হয়, তখন এটি একটি ইতিবাচক ঢাল হিসাবে উল্লেখ করা হয়। সাদা থেকে কালো রূপান্তরের জন্য, এটি একটি নেতিবাচক ঢাল।
একটি চিত্রের ডেরিভেটিভ ব্যবহার করে প্রান্ত সনাক্তকরণ
একটি চিত্র একটি ম্যাট্রিক্স হিসাবে সংরক্ষণ করা হয়, যেখানে সেই ম্যাট্রিক্সের প্রতিটি উপাদান সমস্ত পিক্সেল সম্পর্কে তথ্য রাখে। ডেরিভেশন খুঁজে পেতে আমাদের Laplacian অপারেটর প্রয়োজন। তাই ল্যাপ্লাসিয়ান পেতে, প্রথমে আমাদের সোবেল ডেরিভেটিভস দরকার। এই সোবেল ডেরিভেটিভগুলি একটি চিত্রের গ্রেডিয়েন্ট বৈচিত্র পেতে ব্যবহৃত হয়।
অনুভূমিক সোবেল ডেরিভেটিভ (সোবেল এক্স)
এই সোবেল ডেরিভেটিভটি প্রকৃত চিত্র এবং অন্য একটি ম্যাট্রিক্স (যাকে কার্নেল বলা হয়) এর আবর্তনের মাধ্যমে পাওয়া যায়। সাধারণ কেসের জন্য কার্নেল হল 3x3 ম্যাট্রিক্স।
sobel() নামে একটি ফাংশন আছে . এই ফাংশনটি ব্যবহার করে, আমরা সোবেল ডেরিভেটিভগুলি খুঁজে পেতে পারি। যখন আমরা সোবেল x পাওয়ার চেষ্টা করি, তখন y অংশটি 0 হওয়া উচিত।
উদাহরণ কোড
import cv2
import numpy as np
capture = cv2.VideoCapture('sample_video.mp4') #Capture frames from video file.
while(capture.isOpened()): # Run the loop until the video ends
ret, frame = capture.read() #Fetch the frames from video
# Convert BGR color to (Hue Saturation Value) mode
hsv_col = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
# The Sobelx Method
sobelx = cv2.Sobel(frame,cv2.CV_64F,1,0,ksize=5)
cv2.imshow('SobelX',sobelx)
k = cv2.waitKey(5) & 0xFF
if k == 27: #27 is the ASCII for ESC key. When ESC is pressed, it will stop
break
capture.release()
cv2.destroyAllWindows() #Clean memory after removing the windows
আউটপুট
<কেন্দ্র>
উল্লম্ব সোবেল ডেরিভেটিভ (সোবেল ওয়াই)
একইভাবে আমরা sobel() ফাংশন ব্যবহার করে উল্লম্ব সোবেল ডেরিভেটিভ খুঁজে পেতে পারি। এই ক্ষেত্রে x অংশ হবে 0।
উদাহরণ কোড
import cv2
import numpy as np
capture = cv2.VideoCapture('sample_video.mp4') #Capture frames from video file.
while(capture.isOpened()): # Run the loop until the video ends
ret, frame = capture.read() #Fetch the frames from video
# Convert BGR color to (Hue Saturation Value) mode
hsv_col = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
# The Sobely Method
sobely = cv2.Sobel(frame,cv2.CV_64F,0,1,ksize=5)
cv2.imshow('SobelY',sobely)
k = cv2.waitKey(5) & 0xFF
if k == 27: #27 is the ASCII for ESC key. When ESC is pressed, it will stop
break
capture.release()
cv2.destroyAllWindows() #Clean memory after removing the windows
আউটপুট
<কেন্দ্র>
দ্য ল্যাপ্লাসিয়ান ডেরিভেটিভ
শেষ পর্যন্ত আমরা চিত্রটির ল্যাপ্লাসিয়ান ডেরিভেটিভ দেখতে পাব। ল্যাপ্লাসিয়ান() নামে একটি ফাংশন আছে। এটি ডেরিভেটিভ পেতে ব্যবহৃত হয়।
উদাহরণ কোড
import cv2
import numpy as np
capture = cv2.VideoCapture('sample_video.mp4') #Capture frames from video file.
while(capture.isOpened()): # Run the loop until the video ends
ret, frame = capture.read() #Fetch the frames from video
# Convert BGR color to (Hue Saturation Value) mode
hsv_col = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
# The Laplacian Method
laplacian = cv2.Laplacian(frame,cv2.CV_64F)
cv2.imshow('Laplacian',laplacian)
k = cv2.waitKey(5) & 0xFF
if k == 27: #27 is the ASCII for ESC key. When ESC is pressed, it will stop
break
capture.release()
cv2.destroyAllWindows() #Clean memory after removing the windows
আউটপুট
<কেন্দ্র>