python - tutorial - ওপেনসিভি ভিডিও ক্যাপচারের স্থায়ী স্থিরতা




python wiki (2)

আমি Link থেকে পদক্ষেপগুলি অনুসরণ করেছি

এবং

উপরের লিঙ্কে এই কমাক কমান্ডটি নীচের মত কাজ করেছে

cmake -DWITH_CUDA = off -DBUILD_TIFF = অন -DBUILD_opencv_java = অন -DWITH_FFMPEG = অন -DBUILD_opencv_python3 = অন -DENABLE_AVX = অন -DWITH_OPENGL = অন -DWITH_OPENCL = -DWITH_IPP অন = -DWITH_TBB = অন -DWITH_EIGEN = -DWITH_V4L উপর = অন - DWITH_VTK = off -DBUILD_TESTS = off -DBUILD_PERF_TESTS = off -DCMAKE_BUILD_TYPE = রিলিজ -DBUILD_opencv_python2 = off -DCMAKE_INSTALL_PREFIX = $ (python3 -c "আমদানি sys; মুদ্রণ (sys.prefix)") -DPYTHON3_EXECUTABLE = $ (যা python3) -DPYTHON3_INCLUDE_DIR = dist (পাইথন 3-সি "থেকে ডিসটুইটস.সাইকনফিগ আমদানি get_python_inc; মুদ্রণ (get_python_inc ())") -DPYTHON3_PACKAGES_PATH = $ (পাইথন 3-সি "থেকে ডিসটুইটিস.সাইকনফাইগ আমদানি get_python_lib_C__C__C__C_B_CIB) প্রাপ্ত করুন -ডি CMAKE_INSTALL_PREFIX = / usr / স্থানীয় -D INSTALL_PYTHON_EXAMPLES = চালু-ইনস্টলল_সি_এক্সএএমএলপিএলএস = অফ-ডি পাইথন_এক্সেকটেবল = / হোম / ইউজার / অ্যানাকোন্ডা 3 / বিন / পাইথন_উইলডাইক_প্রেস ..

আমি ওপেনসিভি বিল্ডের সঠিক আয়াত নই তবে সঠিক পাইথন_এক্সইসিইউটিবেল = / হোম / ইউজার / অ্যানাকোন্ডা 3 / বিন / পাইথন পাথটি আমার কাছে মনে হয় যে নির্দিষ্ট অজগরটির জন্য ওপেনসিভি বাইন্ডিংগুলি আপডেট হতে পারে

এই প্রশ্নটি অনেক ওয়েবসাইটে অসংখ্যবার উত্থাপিত হয়েছে, তবে চূড়ান্ত সমাধান নয়। আমি ফাংশন ব্যবহার করে একটি ভিডিও দিয়ে ওপেনসিভি চালানোর চেষ্টা করছি:

import cv2
cap = cv2.VideoCapture('video.mp4')
if(cap.isOpened()==False):
print "Error opening camera"

তবে এটি প্রতিবার ব্যর্থ হয়। আমি বিভিন্ন সাইট থেকে প্রায় সমস্ত পদক্ষেপ চেষ্টা করেছি, কিন্তু এটি কাজ করতে পারা যায় না (পৃথকভাবে ffmpeg পুনর্নির্মাণ সহ)।

কোন সাহায্যের অনেক প্রশংসা হবে।

আমার প্ল্যাটফর্মটি উবুন্টু 17 এবং পাইথন 3।


এই উত্তরটি লিনাক্স এবং পাইথনের কথা মাথায় রেখেই লেখা হয়েছে তবে সাধারণ ধারণাটি ওপেনসিভি দ্বারা সমর্থিত কোনও ওএস এবং ভাষার ক্ষেত্রে প্রয়োগ করা যেতে পারে।

ভিডিও VideoCapture ক্লাসে ভিডিও ফাইলটি না খোলার অনেক কারণ থাকতে পারে তবে নিম্নলিখিত তিনটি বেশিরভাগ ক্ষেত্রেই প্রযোজ্য।

ওপেনসিভি এফএফএমপিইগ সমর্থন:

ডিফল্টরূপে ওপেনসিভি ভিডিও ফাইলগুলি পড়তে ffmpeg ব্যবহার করে। ওপেনসিভি এফএফএমপিইগ সমর্থন দিয়ে নির্মিত নাও হতে পারে। ওপেনসিভি এফএফএমপিইগ সমর্থন সহ নির্মিত হয়েছিল কিনা তা জানতে, টার্মিনালে এন্টার করুন:

python -c "import cv2; print(cv2.getBuildInformation())" | grep -i ffmpeg

আউটপুটটি এমন কিছু হওয়া উচিত:

এফএফএমপিইগ: হ্যাঁ

যদি আউটপুট No তবে ffmpeg সমর্থন সহ উত্স থেকে ওপেনসিভি নির্মাণের জন্য একটি অনলাইন গাইড অনুসরণ করুন।

এফএফএমপিইগ কোডেক:

এটা সম্ভব যে এফএফএমপিইগের আপনার নির্দিষ্ট ফাইলের কোডেক নেই। এফএফএমপিইগের এই ফাইলটির ডিকোডিংয়ের ক্ষমতা আছে কিনা তা দেখানোর জন্য আমরা উদাহরণ হিসাবে এই ভিডিওটি ব্যবহার করতে যাচ্ছি।

প্রথমত, আমাদের এই ভিডিও ফাইলটিতে ব্যবহৃত এনকোডিং বিন্যাসটি সন্ধান করতে হবে। আমরা mediainfo প্রোগ্রামটি ব্যবহার করব। টার্মিনালে, প্রবেশ করুন:

mediainfo video_file.mp4

ভিডিও শিরোনামের আউটপুটে, ফর্ম্যাটটি সন্ধান করুন। এই ক্ষেত্রে ব্যবহৃত ভিডিও এনকোডিংটি এভিসি , এটি এইচ 264 এর অন্য নাম।

এখন, আমরা এফসিএমপিইজি AVC এনকোডযুক্ত ফাইলগুলি ডিকোডিংয়ের জন্য কোডেক সমর্থন করে কিনা তা আবিষ্কার করার চেষ্টা করি। টার্মিনালে:

ffmpeg -codecs | grep -i avc

আমার মেশিনে, আউটপুটটি হ'ল:

DEV.LS এইচ 264 এইচ 264 / এভিসি / এমপিইজি -4 এভিসি / এমপিইজি -4 অংশ 10 (ডিকোডার: h264 h264_crystalhd h264_vdpau) (এনকোডার: libx264 libx264rgb)

আমরা ডিইভিতে আগ্রহী, যার অর্থ ডিকোডিং, এনকোডিং এবং ভিডিও। এর অর্থ হ'ল এভিসি একটি ভিডিও এনকোডিং ফর্ম্যাট এবং এফএফএমপিইগ এই ফর্ম্যাটটির জন্য উভয় এনকোডিং এবং ডিকোডিং ক্ষমতা সমর্থন করে।

ফাইল পাথ

শেষ পর্যন্ত, ফাইলের পথটি সঠিক কিনা তা পরীক্ষা করে দেখুন বা ফাইলটি উপস্থিত রয়েছে কিনা।