- امیجز کیا ہیں؟
- کمپیوٹر تصاویر کو کیسے اسٹور کرتا ہے
- کسی مشین کے لئے تصاویر کی شناخت کرنا کیوں مشکل ہے
- اوپن سی وی کی درخواست اور استعمال
- ازگر اور ایناکونڈا کے ساتھ اوپن سی وی انسٹال کرنا
- اوپن سی وی میں تصاویر کھولنا اور محفوظ کرنا
- اوپن سی وی میں گرے اسکیلنگ امیج
- رنگت کی جگہیں
- آرجیبی امیج کے انفرادی اجزا کی تلاش کر رہا ہے
- تصویر کو انفرادی آرجیبی جزو میں تبدیل کرنا
- ہسٹوگرام امیجریشن آف امیج
- اوپن سی وی کا استعمال کرتے ہوئے تصاویر اور شکلیں ڈرائنگ کرنا
آرٹ دیکھنے کا ایک طریقہ ہے ، اور وہ کہتے ہیں کہ دیکھنا یقین ہے ، لیکن اس کے برعکس یہ بھی سچ ہے ، یقین کر رہا ہے اور وژن کے تحفہ کے بغیر اس دنیا میں رہنے کا تصور کرنا واقعی مشکل ہے - ہماری آنکھیں ، یہ نوزائیدہ ہونے کی وجہ سے کتنا حیرت انگیز ہے جب ہماری آنکھیں کھلی رہتی ہیں تو ہم دنیا کو دیکھتے ہیں اور اپنے آس پاس کی دنیا کو پہچاننا اور دیکھنا شروع کردیتے ہیں لیکن جیسے جیسے وقت گزرتا جاتا ہے ، وہی حیرت انگیز تجربہ ایک بدبخت انسان بن جاتا ہے۔ لیکن جب ہم ٹیکنالوجی کے ساتھ ترقی کر رہے ہیں تو ہم اس راستے پر ہیں جہاں مشینیں بھی اسے دیکھنے اور سمجھنے کے قابل ہیں۔ فی الحال ، اگر آپ اپنے فون کو صرف اپنے چہرے سے انلاک کردیتے ہیں تو ، یہ سائنس فائی معلوم نہیں ہوگا ، لیکن مشین ویژن کی ترقی کی کہانی 20 سال سے بھی زیادہ عرصہ پہلے کی ہے۔
اس فیلڈ میں ابتدائی باضابطہ اقدام 1999 میں انٹیل پہل میں واپس لیا گیا تھا ، جب جاری تمام تحقیق اوپن سی وی (اوپن سورس کمپیوٹر وژن) کے تحت تعاون کی گئی تھی ، اصل میں C ++ میں لکھا گیا تھا ، اس کی پہلی بڑی ریلیز 2006 میں دوسری بڑی ریلیز 1.0 تھی۔ 2009 میں ، 2015 میں تیسرا اور ابھی 2018 میں چوتھا۔ اب اوپن سی وی میں C ++ ، ازگر اور جاوا انٹرفیس ہیں اور وہ ونڈوز ، لینکس ، میک او ایس ، آئی او ایس اور اینڈرائڈ کو سپورٹ کرتا ہے۔ لہذا یہ راسبیری پائی میں ازگر اور لینکس ماحول کے ساتھ آسانی سے انسٹال کیا جاسکتا ہے۔ اور اوپن سی وی اور منسلک کیمرہ والے راسبیری پیئ کا استعمال بہت سے ریئل ٹائم امیج پراسیسنگ ایپلی کیشنز جیسے چہرے کا پتہ لگانے ، چہرہ لاک ، آبجیکٹ سے باخبر رہنے ، کار نمبر پلیٹ کا پتہ لگانے ، ہوم سیکیورٹی سسٹم وغیرہ بنانے کے لئے کیا جاسکتا ہے۔
اوپن سی وی کا استعمال کرتے ہوئے تصویری پروسیسنگ سیکھنے میں جانے سے پہلے یہ جاننا ضروری ہے کہ تصاویر کیا ہیں اور انسان اور مشینیں ان تصاویر کو کس طرح جانتی ہیں۔
امیجز کیا ہیں؟
امیجز دکھائے جانے والے لائٹ اسپیکٹرم کی دو جہتی نمائندگی ہیں۔ اور دکھائی دینے والا لائٹ سپیکٹرم اورکت اور الٹرا وایلیٹ سپیکٹرم کے مابین وہاں موجود برقی مقناطیسی اسپیکٹرم کا صرف ایک حصہ ہے۔
تصاویر کیسے بنتی ہیں: - جب روشنی کسی فلم ، سینسر یا ریٹنا پر کسی شے کی عکاسی کرتی ہے۔
اس طرح ہماری آنکھیں کام کرتی ہیں ، ایک چھوٹی سی کھلی ہوئی روشنی کو روکنے میں رکاوٹ کا استعمال کرتے ہوئے جس سے روشنی گزر سکتی ہے اسے یپرچر کہا جاتا ہے ، اور یہ ایک بہت ہی مرکوز شبیہہ تشکیل دیتی ہے اور یہ ایک پن ہول کیمرے کے کام کرنے والا نمونہ ہے ، لیکن ایک پن ہول کیمرا میں ایک پریشانی ہے ، اتنی ہی روشنی روشنی یپرچر میں داخل ہوگی ، جو فلم یا بنائی گئی تصویر کے لئے موزوں نہیں ہوسکتی ہے ، ہم بھی ایک مرکوز امیج حاصل نہیں کرسکتے ، تاکہ ہم اپنی تصویر کو فوکس کریں۔ فلم کو آگے پیچھے منتقل کرنے کی ضرورت ہے ، لیکن یہ بہت سے حالات میں مسئلہ ہے۔
یا ہم عینک کا استعمال کرکے اس مسئلے کو حل کرسکتے ہیں ، یہ ہمیں یپرچر کے سائز کو کنٹرول کرنے کی اجازت دیتا ہے ، اور فوٹو گرافی میں جسے ایف اسٹاپ کے نام سے جانا جاتا ہے ، عام طور پر ایف اسٹاپ کی قدر کو کم کرنا فوٹو گرافی میں بہتر ہے۔
یپرچر سائز ہمیں فوٹوگرافی میں بوکیہ نامی فیلڈ کی اچھی گہرائی میں بھی جانے دیتا ہے ، اس سے ہمیں ایک دھندلا پن پس منظر حاصل کرنے کی اجازت ملتی ہے جبکہ ہم تصویر پر توجہ دیتے ہیں۔
کمپیوٹر تصاویر کو کیسے اسٹور کرتا ہے
آپ نے مختلف تصویری فارمیٹس جیسے پی پی این جی ، جے پی ای جی اور دیگر کے بارے میں سنا ہوگا ، یہ سب ہمارے مطابق دنیا کی ڈیجیٹل نمائندگی ہیں ، کمپیوٹر اس شبیہہ کو ڈیجیٹل کوڈ میں اسٹوریج کے لئے ترجمہ کر کے کرتے ہیں اور پھر فائل کی ترجمانی کسی امیج میں کرتے ہیں۔ ڈسپلے. لیکن بنیادی باتوں میں وہ تصاویر کو ذخیرہ کرنے کے لئے ایک مشترکہ پلیٹ فارم استعمال کرتے ہیں ، اور اوپن سی وی کے لئے بھی یہی سچ ہے۔
اوپن سی وی اپنی تصاویر کے ل default آرجیبی (سرخ ، سبز اور نیلے رنگ) رنگ کی جگہ کا استعمال کرتا ہے ، جہاں ہر پکسل کوآرڈینیٹ (ایکس ، وائی) 3 قدروں پر مشتمل ہوتا ہے جس میں 8 بٹ شکل میں (0-255 ، 2 8) ہوتا ہے۔
ہر رنگ کی مختلف شدت کو ملنے سے ہمیں پوری رنگا رنگی مل جاتی ہے ، اسی وجہ سے مصوری یا آرٹ میں ان تینوں رنگوں کو بنیادی رنگ اور دوسرے تمام کو ثانوی سمجھا جاتا ہے ، کیونکہ زیادہ تر ثانوی رنگ بنیادی رنگوں سے تشکیل پاتے ہیں۔ پیلے رنگ کی طرح ، ہمارے پاس بھی درج ذیل اقدار ہیں: سرخ - 255؛ سبز - 255؛ نیلا - 0
اب یہ تصاویر کثیر جہتی صفوں میں محفوظ ہیں ۔ پروگرامنگ میں ، سرنی چیزوں کے جمع کرنے کا ایک سلسلہ ہے۔ اور یہاں ہم تین قسم کی ارایوں 1D ، 2D اور 3D سے نمٹتے ہیں جہاں 'D' جہتی کا مطلب ہے۔
رنگین تصاویر تین جہتی صفوں میں محفوظ کی جاتی ہیں ، جہاں تیسری جہت آرجیبی رنگوں کی نمائندگی کرتی ہے (جسے ہم بعد میں دیکھیں گے) ، اور ایک ساتھ مل کر وہ ایک شبیہہ کے ل different پکسلز کی مختلف شدت پیدا کرتے ہیں ، جبکہ سیاہ اور سفید تصاویر دو جہتی صفوں میں محفوظ کی جاتی ہیں اور یہ بھی ہے کہ سیاہ اور سفید تصاویر کی دو اقسام گرین اسکیل اور بائنری تصاویر ہیں۔
گرے اسکیل امیج دو جہتی صف کے بھوری رنگ کے رنگوں سے بنائ گئی ہیں ، جبکہ بائنری امیجز سیاہ یا سفید رنگ کے پکسلز کی ہیں۔
کسی مشین کے لئے تصاویر کی شناخت کرنا کیوں مشکل ہے
کمپیوٹر وژن اپنے آپ میں ایک چیلنجنگ کام ہے ، آپ خود ہی اندازہ لگاسکتے ہیں کہ کسی مشین کو وژن ، پہچان اور شناخت کا احساس دلانا کتنا مشکل ہے۔ مندرجہ ذیل عوامل ایسے ہیں جو کمپیوٹر وژن کو اتنا مشکل بنا دیتے ہیں۔
- کیمرہ سینسر اور عینک کی حدود
- نقطہ کی مختلف حالتیں دیکھیں
- روشنی کو تبدیل کرنا
- اسکیلنگ
- نتائج
- کلاس مختلف حالتوں کو اعتراض کریں
- مبہم امیجز / آپٹیکل برم
اوپن سی وی کی درخواست اور استعمال
مشکل کے باوجود ، کمپیوٹر وژن میں کامیابی کی بہت سی کہانیاں ہیں
- روبوٹک نیویگیشن - خود ڈرائیونگ کاریں
- چہرے کی کھوج اور شناخت
- سرچ انجن تصویری تلاش
- لائسنس پلیٹ پڑھنا
- دستی تحریر کی پہچان
- سنیپ چیٹ اور چہرے کے فلٹرز
- اعتراض پہچان
- کھیلوں میں بال اور پلیئر سے باخبر رہنا
- اور بہت کچھ!
ازگر اور ایناکونڈا کے ساتھ اوپن سی وی انسٹال کرنا
اوپن سی وی سی ++ میں لکھا گیا ہے ، لیکن اس کو سی ++ سے لاگو کرنا بہت مشکل ہے لہذا ہم اس کو ازگر کی حیثیت سے ایک اعلی سطح کی زبان کے ساتھ نافذ کرنے کا انتخاب کرتے ہیں ، اور ازگر کے ساتھ اوپن سی وی کو لاگو کرنے کے اضافی فوائد بھی ہیں کیوں کہ ازگر آسان زبان میں سے ایک ہے اعداد و شمار کے سائنس اور مشین لرننگ ایپلی کیشنز کے لئے بھی یہ انتہائی طاقت ور ہے اور یہ نپسی صفوں میں تصاویر بھی اسٹور کرتا ہے جس سے ہمیں کچھ بہت ہی طاقتور آپریشن آسانی سے کرنے کی اجازت ملتی ہے۔
بنیادی پروگرامنگ ہائی اسکول کی سطح کے ریاضی ، ایک ویب کیم ، ازگر 2.7 یا 3.6 (ایناکونڈا پیکیج کو ترجیح دی جاتی ہے) کے ساتھ ایکسپوزور کے ساتھ مفید ہے۔
مرحلہ 1. ایناکونڈا ازگر پیکیج ڈاؤن لوڈ اور انسٹال کریں
اس پر جائیں: https://www.anaconda.com ڈاؤنلوڈ کریں اور اپنی مشین کے ونڈوز ، لینکس یا میک کے موسم کے مطابق منتخب کریں اور آپ 64 بٹ سسٹم یا 32 بٹ سسٹم کے لئے ازگر 2.7 یا ازگر کے 3.7 ورژن کا انتخاب کرسکتے ہیں ، لیکن اب ایک دن میں زیادہ تر سسٹم 64 بٹ ہوتا ہے۔
ازگر کی ایناکونڈہ تقسیم اسپائیڈر اسٹوڈیو ، جوپیٹر نوٹ بکس اور ایناکونڈا پرامپٹ کے ساتھ آتی ہے ، جو ازگر کو استعمال کے ل super دوستانہ بنا دیتا ہے۔ ہم مثال کے طور پر اسپائیڈر اسٹوڈیو استعمال کریں گے۔
ازگر 2.7 یا 3.7 کے درمیان انتخاب مکمل طور پر غیر جانبدار ہے ، لیکن تاہم ہم ان مثالوں کے ل p ہم ازگر 3.7 کا استعمال کر رہے ہیں کیونکہ یہ اسگرد کا مستقبل ہے اور اس نے ازگر 2.7 کی شکل 2020 حاصل کرلی ہے ، اس کے علاوہ زیادہ تر لائبریریوں میں ازگر 3.7 کو برقرار رکھتے ہوئے تیار کیا جارہا ہے۔ ذہن میں ازگر کا آئندہ پہلو۔ اس کے علاوہ یہ ریاضی کی بنیادی کارروائیوں جیسے متوقع نتائج بھی دیتا ہے جیسے (2/5 = 2.5) ، اگرچہ ازگر 2.7 اس کی تشخیص 2 کرے گا۔ اس کے علاوہ پرنٹ کو ازگر 3.7 (پرنٹ ("ہیلو")) کے طور پر بھی سمجھا جاتا ہے ، تو یہ پروگرامرز کو ہاتھ دیتی ہے۔
مرحلہ 2. اوپن سی وی کے ساتھ ورچوئل پلیٹ فارم تشکیل دینا
ہم اناکونڈا پرامپٹ اور یہاں اپ لوڈ کردہ YML فائل کا استعمال کرکے اسپائیڈر کے لئے ورچوئل پلیٹ فارم تشکیل دے کر اوپن سی وی انسٹال کرنے جارہے ہیں۔
وائی ایم ایل فائلوں کے ذریعہ ہم تمام پیکیجز اور لائبریریوں کو انسٹال کریں گے جن کی ضرورت ہوگی ، لیکن تاہم اگر آپ کوئی اضافی پیکیج انسٹال کرنا چاہتے ہیں تو آپ اس پیکیج کی کمانڈ چلاتے ہوئے ، ایناکونڈا پرامپٹ کے ذریعے آسانی سے انسٹال کرسکتے ہیں۔
اپنے ونڈوز سرچ آئیکن پر جائیں اور ایناکونڈا پرامپٹ ٹرمینل ڈھونڈیں ، آپ اسے اپنے ایناکونڈا فولڈر میں ڈھونڈ سکتے ہیں جو آپ نے ابھی انسٹال کیا ہے۔
پھر آپ کو اپنی ڈاؤن لوڈ کردہ YML فائل ڈھونڈنی ہوگی ، اور یہاں سے آپ کے پاس دو انتخاب ہیں یا تو آپ اپنے ٹرمینل کی ڈائرکٹری کو اس مقام پر تبدیل کریں جہاں آپ کی YML فائل ڈاؤن لوڈ کی گئی ہے یا تو اپنی YML فائل کو اسی ڈائریکٹری میں کاپی کریں جہاں آپ کا زیادہ تر ایناکونڈا نصب ہے۔ معاملات یہ C کے اندر ہوں گے: \ ڈرائیو ، اپنی YML فائل کو مخصوص مقام پر کاپی کرنے کے بعد اپنے اشارہ پر درج ذیل کمانڈ کو چلائیں
کونڈا env –f ورچوئل_پلیٹفارم_سوڈوز.یمل بنائیں
چونکہ میرا سسٹم ونڈوز پر YML فائل پر چل رہا ہے اور کمانڈ ونڈوز سے مساوی ہے ، تاہم ، آپ ونڈوز کی جگہ لینکس یا میک کی جگہ پر لے کر اپنے سسٹم کے مطابق ترمیم کرسکتے ہیں۔
نوٹ: - اگر پیکیج نکالنے میں غلطی ہوتی ہے تو پہلے پائرچ اور نپسی انسٹال کریں اور پھر مذکورہ کمانڈ چلائیں۔
اب ایناکونڈا نیویگیٹر تلاش کریں اور وہاں "ڈراپ ڈاؤن مینو" ___ پر "ہوگا اور وہاں سے ورچوئل ماحول منتخب کریں اور پھر وہاں سے آپ کو اسپائیڈر اسٹوڈیو لانچ کرنا پڑے گا ۔
اور یہ ہے ، آپ شروع کرنے کے لئے تیار ہیں!
اوپن سی وی میں تصاویر کھولنا اور محفوظ کرنا
یہاں ہم اوپن سی وی میں ازگر کو استعمال کرنے کے لئے کچھ بنیادی احکامات اور اصطلاحات کی وضاحت کر رہے ہیں۔ ہم اوپن سی وی پڑھائی میں تین بنیادی افعال کے بارے میں سیکھیں گے ، انشاء اور تحریر کریں۔
ازگر میں # کامنٹس # علامت کے ذریعہ دیئے گئے ہیں
کمانڈ کے ذریعہ ازگر میں اوپنکیو درآمد کریں
درآمد cv2
شبیہہ کے راستے کی وضاحت کرتے ہوئے 'امیریڈ' استعمال کرکے ایک تصویر لوڈ کریں
شبیہ = cv2.imread ('input.jpg')
اب اس شبیہہ کو ایک متغیر کی حیثیت سے عجیب و غریب مقام میں بھری ہوئی اور ذخیرہ کیا گیا ہے جسے ہم نے بطور تصویر نام دیا ہے
اب اپنے تصویری متغیر کو ظاہر کرنے کے لئے ، ہم 'نمائش' کا استعمال کرتے ہیں اور نقشے فنکشن کے لئے پہلا پیرامیٹر شبیہہ ونڈو پر دکھائے جانے والا ٹائٹل ہے ، اور اس میں تاروں کے نام کی نمائندگی کرنے کے لئے ('') درج کرنا پڑتا ہے۔
cv2.imshow ('ہیلو ورلڈ' ، تصویر)
جب تصویر کی کھڑکی کھلی ہوتی ہے تو انتظارکی ہمیں ان پٹ معلومات فراہم کرنے کی اجازت دیتی ہے ، اسے جاری رکھنے سے پہلے کسی کو دبانے کا بس انتظار کرتا ہے ، نمبر لگا کر (0 کے علاوہ) ، ہم اس تاخیر کی وضاحت کرسکتے ہیں کہ آپ ونڈو کو کتنی دیر کھلی رکھیں گے (وقت ملی سیکنڈ میں یہاں)۔
cv2.waitKey ()
'ڈراسٹ اینڈ وینڈوز' نے کھلی کھڑکیوں کو بند کردیا ، اس کو رکھنے میں ناکامی آپ کے پروگرام کو معلق رکھنے کا سبب بنے گی۔
cv2.destroyAllWindows ()
، اس کے ل we ہم نمی کا استعمال کریں گے ، نمیپتھیر پروگرامنگ کے ل large ایک لائبریری ہے جو بڑے کثیر جہتی صفوں اور میٹرکس کو مدد فراہم کرنے کے لئے ہے۔
درآمد cv2 # نپٹی درآمد نپسی کو بطور این پی امیج = cv2.imread ('input.jpg') cv2.imshow ('ہیلو_ورلڈ' ، شبیہہ) # شکل فعل بہت مفید ہے جب ہم کسی صف کے طول و عرض کو دیکھ رہے ہیں ، یہ ایک ٹول واپس کرتا ہے جو شبیہہ پرنٹ (شبیہہ کی شکل) cv2.waitKey () cv2.destroyAllWindows () کی جہت دیتا ہے۔
کنسول آؤٹ پٹ - (183 ، 275 ، 3) ، شبیہہ کی دو جہتیں 183 پکسلز اونچائی میں اور 275 پکسلز چوڑائی میں ہیں اور 3 کا مطلب یہ ہے کہ تین دیگر اجزاء (R ، G، B) ہیں جو یہ شبیہ بناتے ہیں (یہ ظاہر کرتا ہے) کہ رنگین تصاویر تین جہتی صفوں میں محفوظ ہیں)۔
پرنٹ ('شبیہ کی اونچائی:' ، (شبیہہ کی شکل ، 'پکسلز')) پرنٹ ('شبیہہ کی چوڑائی:' ، (شبیہہ کی شکل ، 'پکسلز'))
کنسول آؤٹ پٹ - تصویر کی اونچائی: (183 ، 'پکسلز')
تصویر کی چوڑائی: (275 ، 'پکسلز')
اوپن سی وی میں ترمیم شدہ تصویر کو محفوظ کرنا
ہم فائل نام اور تصویر کو محفوظ کرنے کے لئے اس کی وضاحت کے لئے 'لکھنا' استعمال کرتے ہیں ۔
cv2.imwrite ('output.jpg'، شبیہ) cv2.imwrite ('output.png'، شبیہ)
پہلی دلیل اس فائل کا نام ہے جسے ہم محفوظ کرنا چاہتے ہیں ، {اس فائل کو پڑھنے یا اسے محفوظ کرنے کے لئے ('') استعمال کرتے ہیں جس سے اس کو اسٹرنگ کی حیثیت سے ظاہر کیا جاسکتا ہے second اور دوسری دلیل فائل کا نام ہے۔
اوپن سی وی آپ کو تصویر کو مختلف شکلوں میں محفوظ کرنے کی اجازت دیتا ہے۔
اوپن سی وی میں گرے اسکیلنگ امیج
گرے اسکیلنگ وہ عمل ہے جس کے ذریعہ کسی تصویر کو ایک مکمل رنگ سے سرمئی رنگ (سیاہ اور سفید) میں تبدیل کیا جاتا ہے
اوپن سی وی میں ، بہت سارے افعال پروسیسنگ سے قبل تصویروں کو گریسکیل کرتے ہیں۔ ایسا اس لئے کیا گیا ہے کہ یہ شبیہ کو آسان بناتا ہے ، شور کی کمی کے طور پر کام کرتا ہے اور پروسیسنگ کا وقت بڑھاتا ہے کیوں کہ شبیہ میں کم معلومات موجود ہیں (کیوں کہ گرے اسکیل امیجز دو جہتی صفوں میں محفوظ ہیں)
درآمد cv2 # ہماری ان پٹ تصویر کی شبیہہ کو لوڈ کریں = cv2.imread ('input.jpg') cv2.imshow ('original'، image) cv2.waitKey () # ہم گرے اسکیل گرے_یجج = cv2.cvt رنگ میں تبدیل کرنے کے لئے cvtcolor کا استعمال کرتے ہیں۔ ، cv2.COLOR_BGR2GRAY) cv2.imshow ('grayscale'، brown_image) cv2.waitKey () cv2.destroyALLWindows ()
تصویر کو گرے اسکیل میں تبدیل کرنے کا آسان طریقہ یہ ہے کہ صرف پڑھنے والے فنکشن میں دلیل 0 کو امیج کے نام کے ساتھ شامل کریں
درآمد سی وی 2 گری_یومیج = cv2.imread ('input.jpg'، 0) cv2.imshow ('گرے اسکیل'، grey_image) cv2.waitKey () cv2.destroyAllWindows ()
درآمد cv2 درآمد numpy بطور این پی امیج = cv2.imread ('input.jpg') پرنٹ (شبیہہ کی شکل) cv2.imshow ('اصل' ، شبیہ) cv2.waitKey () گرے_ آئمج = cv2.cvtColor (تصویری ، cv2.COLOR_BGR2GRAY) cv2.imshow ('grayscale'، brown_image) پرنٹ کریں (خاکستری_جسمی شکل) cv2.waitKey () cv2.destroyALLWindows ()
کنسول آؤٹ پٹ: - (183 ، 275 ، 3) - رنگین شبیہہ کیلئے
(183 ، 275) - گرے اسکیل امیج کے لئے
لہذا یہ واضح طور پر ظاہر کرتا ہے کہ رنگین نقشوں کی نمائندگی تین جہتی صفوں سے کی جاتی ہے ، جبکہ سرمئی پیمانے کی تصاویر کو دو جہتی صفوں سے دکھایا جاتا ہے۔
رنگت کی جگہیں
رنگ خالی جگہوں سے تصاویر محفوظ ہوتی ہیں۔ آرجیبی ، ایچ ایس وی ، سی ایم وائی کے رنگ کی مختلف جگہیں ہیں ، یہ رنگ کی نمائندگی کرنے کے صرف آسان طریقے ہیں۔
آرجیبی۔ سرخ ، سبز اور نیلے۔
HSV - رنگت ، سنترپتی اور قیمت.
اور سی ایم وائے کو عام طور پر انکجیٹ پرنٹرز میں استعمال کیا جاتا ہے۔
آرجیبی یا بی جی آر رنگ کی جگہ
اوپن سی وی کی ڈیفالٹ رنگین جگہ آرجیبی ہے۔ آر جی بی ایک اضافی رنگ ماڈل ہے جو مختلف شدت / چمک کے نیلے ، سبز اور سرخ رنگوں کو ملا کر رنگ پیدا کرتا ہے۔ اوپن سی وی میں ہم 8 بٹ رنگ گہرائی کا استعمال کرتے ہیں۔
- سرخ (0-255)
- نیلے (0-255)
- سبز (0-255)
تاہم اوپن سی وی دراصل رنگ کو بی جی آر فارمیٹ میں اسٹور کرتا ہے ۔
تفریحی حقائق: - ہم کمپیوٹرز میں بی جی آر آرڈر کو اس وجہ سے استعمال کرتے ہیں کہ کیسے دستخط شدہ 32 بٹ انٹیجر میموری میں محفوظ ہوجاتے ہیں ، یہ اب بھی آر بی جی کے طور پر اسٹور ہوجاتا ہے۔ عددی رنگ کی نمائندگی کرتا ہے جیسے: - 0X00BBGGRR 0XRRGGBB کے بطور اسٹور کیا جائے گا۔
HSV رنگ کی جگہایچ ایس وی (ہیو ، سنترپتی اور قیمت / چمک) ایک رنگین جگہ ہے جو انسانوں کے رنگوں کی نمائندگی کرنے کی کوشش کرتا ہے۔ یہ رنگین معلومات کو آرجیبی کلر پوائنٹس کی بیلناکار نمائندگی میں محفوظ کرتا ہے۔
رنگ - رنگین قیمت (0-179)
سنترپتی - رنگ کی متحرک (0-255)
قدر - چمک یا شدت (0-255)
رنگ تقسیم کرنے میں ایچ ایس وی رنگین جگہ کی شکل مفید ہے۔ آر جی بی میں ، مخصوص رنگ کو فلٹر کرنا آسان نہیں ہے ، تاہم ایچ ایس وی مخصوص رنگوں کو فلٹر کرنے کے ل color رنگ کی حدود طے کرنا زیادہ آسان بنا دیتا ہے جیسے ہی ہم ان کو دیکھتے ہو۔
ہیو HSV میں رنگ کی نمائندگی کرتا ہے ، ہیو ویلیو 0 - 180 اور 360 کی نہیں ہوتی ہے لہذا یہ مکمل دائرہ مکمل نہیں کررہا ہے اور لہذا اس کو معیاری سے مختلف نقشہ بنایا گیا ہے۔
رنگین حد کے فلٹرز
- سرخ - (165-15)
- سبز - (45-75)
- بلیو - (90-120)
جیسا کہ ہم جانتے ہیں کہ تصاویر آرجیبی (ریڈ ، گرین اور بلیو) رنگ کی جگہ میں محفوظ ہیں اور اسی طرح اوپن سی وی ہمیں وہی ظاہر کرتا ہے ، لیکن اوپن سی وی کے آر جی بی فارمیٹ کے بارے میں یاد رکھنے والی پہلی بات یہ ہے کہ یہ حقیقت میں بی جی آر ہے اور ہم اسے دیکھ کر جان سکتے ہیں۔ تصویری شکل
درآمد cv2 درآمد نپٹی بطور این پی امیج = cv2.imread ('input.jpg') # B، G، R پہلے 0،0 پکسل B، G، R = امیج پرنٹ (B، G، R) پرنٹ (شبیہہ.نظام) # اب اگر ہم اس کو گرے اسکیل امیج ग्रे #img = cv2.cvt رنگ پر لگائیں (شبیہ ، cv2.COLOR_BGR2GRAY) پرنٹ (سرمئی_مگ.شےپ) # گرے_ایمج پکسل ویلیو 10،50 پکسل پرنٹ (گرے_img)
کنسول آؤٹ پٹ: پرنٹ (بی ، جی ، آر) - 6 11 10
پرنٹ (تصویری شکل) - (183 ، 275 ، 3)
پرنٹ (گرے_ آئیمگ شیپ) - (183 ، 275)
پرنٹ (گرے_مگ) - 69
اب گرے اسکیل امیج میں صرف دو جہتیں ہیں ، چونکہ ہمیں یاد ہے کہ رنگین امیج تین جہتوں میں محفوظ ہے ، تیسری جہت (آر ، جی ، بی) ہے جبکہ گرے اسکیل میں صرف دو جہت موجود ہیں ، چونکہ (آر ، جی) ، B) غیر حاضر ہے اور خاص پکسل کی پوزیشن کے ل we ہمیں صرف ایک قدر ملتی ہے جبکہ رنگین شبیہہ میں ہمیں تین قدر ملتی ہیں۔
رنگ کی ایک اور مفید جگہ HSV ہے
درآمد cv2 امیج = cv2.imread ('input.jpg') hsv_image = cv2.cvt رنگ (تصویر ، cv2.COLOR_BGR2HSV) cv2.imshow ('HSV امیج' ، hsv_image) cv2.imshow ('ہیو چینل' ، csv_image) ۔ imshow ('سنترپتی چینل'، hsv_image) cv2.imshow ('ویلیو چینل'، hsv_image) cv2.waitKey () cv2.destroyAllWindows ()
کوڈ کو چلانے کے بعد آپ ان چاروں تصاویر کو دیکھ سکتے ہیں جن میں سے تین انفرادی چینلز کی ہیں اور ایک کو HSV امیجریٹ کیا گیا ہے۔
ہیو چینل کی تصویر کافی تاریک ہے کیونکہ اس کی قدر صرف 0 سے 180 تک ہوتی ہے۔
نیز ، یہ بھی نوٹ کریں کہ آئی ایم شو شو آپ کو آرجیبی یا بی جی آر امیج کو دکھانے کی کوشش کرتا ہے ، لیکن ایچ ایس وی تبادلوں نے اسے اوورپلس کردیا۔
نیز ، ویلیو چینل اس کی چمک کی وجہ سے شبیہہ کے مٹیالا پیمانہ کی طرح ہوگا۔
آرجیبی امیج کے انفرادی اجزا کی تلاش کر رہا ہے
درآمد cv2 امیج = cv2.imread ('इनपुट.jpg') # اوپن سی وی کا اسپلٹ فنکشن امیج کو ہر رنگ انڈیکس B ، G ، R = cv2.split (شبیہ) cv2.imshow ("ریڈ" ، R) cv2.imshow میں تقسیم کرتا ہے۔ "گرین" ، جی) cv2.imshow ("بلیو" ، B) # انفرادی رنگ کے اجزاء کو ملا کر اصلی تصویر بنانا # cv2.olve () cv2.imshow ("ضم" ، ضم) # نیلے رنگ کے ضم کو بیان کرتے ہوئے = cv2.olve () cv2.imshow ("نیلے رنگ کے رنگوں کے ساتھ ملا ہوا" ، ضم) # رنگین انفرادی اجزاء کی شکل پیش کرتے ہوئے۔ # آؤٹ پٹ صرف دو جہت ہوگی جس کی لمبائی اور چوڑائی ہوگی ، کیوں کہ آرجیبی جزو کا تیسرا عنصر انفرادی طور پر پرنٹ (بی شکل) پرنٹ (R ) کی نمائندگی کرتا ہے ۔شکل) پرنٹ (G. Shape) cv2.waitKey (0) cv2.destroyAllWindows ()
کنسول آؤٹ پٹ: شکل کی شکل سے تصویر کے # طول و عرض
(183 ، 275)
(183 ، 275)
(183 ، 275)
تصویر کو انفرادی آرجیبی جزو میں تبدیل کرنا
ذیل میں کوڈ میں ہم نے تصویر HxW کے طول و عرض کے ساتھ زیروز کا ایک میٹرکس بنایا ہے ، صفر زیرو سے بھری ہوئی صف کو لیکن اسی طول و عرض کے ساتھ واپس کرتا ہے۔
شکل تقریب ہم ایک تصویر کے طول و عرض کو دیکھ رہے ہیں جب، اور یہاں ہم اس شکل کو تقریب کے slicing کیا ہے بہت بہت مفید ہے. لہذا شکل ہر چیز کو مقررہ پوائنٹس تک لے جائے گی یعنی دوسرے نامزد پوائنٹس تک جو تصویر کی اونچائی اور چوڑائی ہو گی کیونکہ تصویر کے آر جی بی جزو کی نمائندگی کرتی ہے اور ہمیں یہاں اس کی ضرورت نہیں ہے۔
درآمد cv2 درآمد نپٹی بطور این پی امیج = cv2.imread ('input.jpg') B، G، R = cv2.split (image) زیروز = np.zeros (image.shape، dtype = "uint8") cv2.imshow ("RED"، cv2.olve ()) cv2.imshow ("گرین"، cv2.olve ()) cv2.imshow ("بلیو"، cv2.olve ()) cv2.waitKey (0) cv2.destroyAllWindows ()
ہسٹوگرام امیجریشن آف امیج
تصویر کے اجزاء کو تصور کرنے کا طریقہ ہسٹوگرام کی نمائندگی کرنا ہے ۔
درج ذیل کوڈ آپ کو تصویر کے اس کے مشترکہ اور انفرادی اجزاء کے رنگ ہسٹوگرام کے ذریعے تجزیہ کرنے دیتا ہے۔
درآمد cv2 درآمد نپپی این پی کے طور پر # ہمیں ہسٹگرام پلاٹس بنانے کے لئے میٹ پللوٹ امپورٹ کرنے کی ضرورت ہے پلاٹ امیج کے طور پر matplotlib.pyplot درآمد کریں (cv2.imread ('ان پٹ. جے پی جی')) ہسٹگرام = cv2.calcHist (،، کوئی نہیں) # ہم پلاٹ ایک ہسٹوگرام ، ریویل () ہماری شبیہہ صفوں کو چمکاتا ہے plt.hist (image.ravel ()، 256،) plt.show () # دیکھنا الگ رنگین چینلز کا رنگ = ('b'، 'g'، 'r') # ہم جانتے ہیں رنگ الگ کریں اور ہر ایک کے لئے ہسٹگرام میں پلاٹ کریں ، این اینومیٹ ( رنگ): ہسٹگرام 2 = سی وی 2 سی ایل ہسٹ (، کوئی نہیں) ، plt.plot (ہسٹگرام 2 ، رنگ = کال) plt.xlim () plt.show ()
آئیے اس کے ہر انفرادی پیرامیٹرز کے ساتھ کیلک ہسٹ فنکشن کو سمجھیں
cv2.calcHist (تصاویر ، چینلز ، ماسک ، ہسٹائز ، حدود)
امیجز: اس کی قسم uint 8 یا فلوٹ 32 کی ماخذ کی تصویر ہے۔ اسے مربع بریکٹ میں دیا جانا چاہئے ، یعنی "" ، جو اس کی دوسری سطح کی صف کو بھی ظاہر کرتا ہے کیونکہ اوپن سی وی کے لئے ایک شبیہہ سرنی کی شکل میں ڈیٹا ہے۔
چینلز: اسکوائر بریکٹ میں بھی دیا جاتا ہے۔ یہ چینل کا انڈیکس ہے جس کے لئے ہم ہسٹوگرام کو کال کرتے ہیں ، مثال کے طور پر اگر ان پٹ گرے اسکیل امیج ہے تو اس کی قیمت ہے ، رنگین تصاویر کے ل you جو آپ پاس کرسکتے ہیں ، یا بالترتیب نیلے ، سبز اور سرخ چینل کے ہسٹگرام کا حساب لگاسکتے ہیں۔
ماسک: نقاب کی تصویر۔ مکمل شبیہہ کے ہسٹگرام کو تلاش کرنے کے ل it ، اسے "کوئی نہیں" کے طور پر دیا گیا ہے۔ لیکن اگر آپ تصویر کے مخصوص خطے کا ہسٹگرام ڈھونڈنا چاہتے ہیں تو آپ کو اس کے لئے ماسک کی تصویر بنانی ہوگی اور اسے ماسک کے بطور دینا ہوگا۔
Histize: یہ ہماری BIN گنتی کی نمائندگی کرتا ہے۔ ہمیں گزرنے والے پورے پیمانے کے لئے مربع بریکٹ میں دینے کی ضرورت ہے۔
حدود: یہ ہماری حد ہے ، عام طور پر ہے
اوپن سی وی کا استعمال کرتے ہوئے تصاویر اور شکلیں ڈرائنگ کرنا
ذیل میں اوپن سی وی میں لائنیں ، مستطیل ، کثیرالاضلاع ، حلقہ وغیرہ ڈرائنگ کے لئے کچھ مثالیں ہیں ۔
درآمد cv2 NP طور درآمدی numpy ایک سیاہ مربع #creating تصویر np.zeros ((512،512،3)، np.uint8) = # ہمیں بھی سیاہ اور سفید میں اس بنا سکتے ہیں، تاہم وہاں کسی قسم کی تبدیلی نہیں ہو گی image_bw = np.zeros ((512،512)، np.uint8) cv2.imshow ("سیاہ مستطیل (رنگ)"، تصویر) cv2.imshow ("سیاہ مستطیل (B&W)"، image_bw)
لائن
کالے مربع پر ایک لائن بنائیں # cv2.line (شبیہہ ، کوآرڈینیٹ شروع کرنا ، کوآرڈینیٹ ، رنگ ، موٹائی) # موٹائی کی ایک اخترن لائن بنانا 5 پکسلز کی تصویر = np.zeros ((512،512،3)، np.uint8) cv2. لائن (تصویر ، (0،0) ، (511،511) ، (255،127،0) ، 5) cv2.imshow ("نیلی لائن" ، تصویر)
مستطیل
# کسی سیاہ مربع پر ایک مستطیل بنائیں # cv2. करेگل (تصویر ، نقاط شروع کرنا ، نقاط ، رنگ ، موٹائی) # موٹائی کا ایک آئتاکار بنانا 5 پکسلز کی تصویر = np.zeros ((512،512،3)، np.uint8) cv2. درست رنگ (تصویر ، (30،50) ، (100،150) ، (255،127،0) ، 5) cv2.imshow ("مستطیل" ، شبیہ)
# کسی سیاہ مربع پر دائرہ بنانا # cv2.c دائرہ (شبیہ ، وسط ، رداس ، رنگ ، پُر) تصویر = np.zeros ((512،512،3)، np.uint8) cv2.circle (تصویر، (100،100)، (50) ، (255،127،0) ، - 1) cv2.imshow ("دائرہ" ، شبیہ)
# کثیرالاضحی تصویر بنانا = np.zeros ((512،512،3)، np.uint8) #let چار پوائنٹس pts = np.array (،،،]، np.int32) کی وضاحت کرتی ہیں # پلیٹیں اب ہمارے پوائنٹس کی تشکیل میں مطلوبہ شکل میں نئی شکل دیں۔ polylines ہے PTS = pts.reshape ((- 1،1،2)) cv2.polylines (تصویر،، یہ سچ ہے، (0،255،255)، 3) cv2.imshow ("کثیرالاضلاع"، تصویر)
opencv کا استعمال کرتے ہوئے متن #putting # cv2.putText (تصویر 'ڈسپلے کرنے کے لئے متن'، bootom نقطہ، فونٹ، فونٹ سائز، رنگ، موٹائی شروع ہونے والے بائیں) تصویر = np.zeros ((512،512،3)، np.uint8) cv2. پٹ ٹیکسٹ (شبیہ ، "ہیلو ورلڈ" ، (75،290) ، cv2.FONT_HERSHEY_COMPLEX ، 2 ، (100،170،0) ، 3) cv2.imshow ("ہیلو ورلڈ" ، تصویری) cv2.waitKey (0) cv2.destroyAllWindows ()
کمپیوٹر وژن اور اوپن سی وی کا احاطہ کرنے کے لئے بہت وسیع موضوعات ہیں لیکن اوپن سی وی اور امیج پروسیسنگ سیکھنے کے لئے یہ گائیڈ اچھا نقطہ آغاز ہوگا۔