কম্পিউটার টিউটোরিয়াল

পাইথনে OpenCV ব্যবহার করে ভিডিও থেকে ফ্রেম এক্সট্রাক্ট করা


OpenCV (Open Source Computer Vision) হলো একটি ওপেন সোর্স প্রোগ্রামিং লাইব্রেরি যা মূলত মেশিন লার্নিং এবং কম্পিউটার ভিশনের জন্য তৈরি করা হয়েছে। এটি কম্পিউটার ভিশন অ্যাপ্লিকেশনগুলোর কাজ করার জন্য কমন ইনফ্রাস্ট্রাকচার দেয় এবং কমার্শিয়াল প্রোডাক্টে মেশিন লার্নিং ব্যবহারকে দ্রুত করে।

এখানে ২.৫ হাজারেরও বেশি অপ্টিমাইজড অ্যালগরিদম রয়েছে যা ক্লাসিক এবং স্টেট-অফ-দ্য-আর্ট (state-of-the-art) দুটোই। এত বেশি অ্যালগরিদম থাকায় এই লাইব্রেরিটি ফেস ডিটেকশন ও রিকগনিশন, অবজেক্ট আইডেন্টিফিকেশন, ভিডিওতে মানব ক্রিয়া ক্লাসিফিকেশন, ক্যামেরা মুভমেন্ট ট্র্যাকিং, একাধিক ছবি জোড়া দিয়ে হাই রেজোলিউশন ছবি বানানো ইত্যাদি বহু উদ্দেশ্যে ব্যবহার করা যায়।

এই এক্সারসাইজে আমরা ফ্রেম-বাই-ফ্রেম ভিডিও প্রসেসিং বাস্তবায়ন করব। ইনপুট ভিডিও লাইভ ক্যামেরা ভিডিও হতে পারে বা আপনার লোকাল মেশিনে সংরক্ষিত ভিডিও। আমরা লোকাল মেশিনে সংরক্ষিত ভিডিও থেকে ফ্রেম বানিয়ে সেগুলো লোকাল ড্রাইভে স্টোর করব।

OpenCV পাইথনের স্ট্যান্ডার্ড লাইব্রেরি না, তাই ইনস্টল করতে হবে। Pip দিয়ে সহজে ইনস্টল করা যায়:

pip install opencv-python
Collecting opencv-python
Downloading https://files.pythonhosted.org/packages/49/4b/ad55a2e2c309fb698e1283e687129e0892c7864de9a4424c4ff01ba0a3bb/opencv_python-4.0.0.21-cp36-cp36m-win32.whl (22.1MB)
100% |████████████████████████████████| 22.1MB 141kB/s
Requirement already satisfied: numpy>=1.11.3 in c:\python\python361\lib\site-packages (from opencv-python) (1.13.0)
Installing collected packages: opencv-python
Successfully installed opencv-python-4.0.0.21

আমার ভিডিও ফাইলটি F: ড্রাইভে আছে, যেটি আমি ফ্রেম (থাম্বনেইল) এ কনভার্ট করে আমার পছন্দের লোকেশনে স্টোর করব।

পাইথনে OpenCV ব্যবহার করে ভিডিও থেকে ফ্রেম এক্সট্রাক্ট করা

কোড: ভিডিও ফাইল পড়ে সেখান থেকে ফ্রেম এক্সট্রাক্ট করার প্রোগ্রাম।

# লাইব্রেরি ইম্পোর্ট
import cv2
import os

# ফ্রেম এক্সট্রাক্ট করার ফাংশন
def extractFrames(pathIn, pathOut):
    # ডিরেক্টরি পথ, যেখানে ভিডিও ইমেজগুলো স্টোর হবে
    os.mkdir(r'c:/users/rajesh/Desktop/data')
    # ভিডিও ফাইল থেকে ভিডিও ক্যাপচার
    cap = cv2.VideoCapture(pathIn)
    # কাউন্টার ভেরিয়েবল
    count = 0
    while (cap.isOpened()):
        # ফ্রেম-বাই-ফ্রেম ক্যাপচার
        ret, frame = cap.read()
        if ret == True:
            print('Read %d frame: ' % count, ret)
            # ফ্রেমটি JPEG ফাইল হিসেবে সেভ
            cv2.imwrite(os.path.join(pathOut, "frame{:d}.jpg".format(count)), frame)
            count += 1
        else:
            break
    # সব শেষে ক্যাপচার রিলিজ
    cap.release()
    cv2.destroyAllWindows()

def main():
    extractFrames(r'f:/I Miss You.mp4', 'data')

if __name__ == "__main__":
    main()

আউটপুট

দেখা যাচ্ছে, আমার ডেস্কটপে (ডেস্টিনেশন পথ) একটি data ফোল্ডার তৈরি হয়েছে এবং ভিডিওর ফ্রেমগুলো ফোল্ডারের ভেতরে স্টোর হয়েছে।

পাইথনে OpenCV ব্যবহার করে ভিডিও থেকে ফ্রেম এক্সট্রাক্ট করা

  1. OpenCV পাইথন প্রোগ্রাম ইমেজ ব্লার (Blur) করার জন্য

  2. পাইথন প্রোগ্রাম: OpenCV ব্যবহার করে ইমেজের এজ ডিটেকশন

  3. পাইথনে OpenCV ব্যবহার করে টেমপ্লেট ম্যাচিং

  4. পাইথন OpenCV-এ ভিডিও উল্টো চালানো (Reverse Playback)