تشخیص حرف انگلیسی و عدد در c++ با open CV از روی عکس یا دوربین - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

تشخیص حرف انگلیسی و عدد در c++ با open CV از روی عکس یا دوربین

+2 امتیاز

سلام دوست عزیز

بسیار سایت زیبا و مفیدی دارید که امیدوارم روز به روز به پیشرفت خود ادامه دهد.

 برنامه ای که برای نوشتن آن تلاش می کنم رو برای شما تعریف می کنم.

1- تشخیص حرف انگلیسی و عدد در c++ با open CV  از روی عکس

با بررسی سایت مفید شما متوجه خوش فکر بودن شما شدم . امیدورام بتونیم با هم همکاری خوبی داشته باشیم .

ممنون از لطفتون. 

ممنون اگر به نتیجه ای رسیدید لطفا بهم اطلاع دهید.

[email protected]

سوال شده دی 22, 1392  بوسیله ی naderjsa (امتیاز 14)   1 1 3
دوباره تگ گذاری شد بهمن 22, 1392 بوسیله ی BlueBlade

1 پاسخ

+2 امتیاز
 
بهترین پاسخ

در ابتدا مراحل یک ocr تجاری را خدمتتون عرض می کنم و بعد از آن در مورد یک ocr ساده راهنماییتون می کنم در مورد ocr های تجاری هم می تونید به خودم مراجعه کنید.

البته این مطالبی که عرض می کنم برای یک پروژه دانشحویی جوابگو هستش و اگر کار تجاری باشه از این روش ساده نمی تونید استفاده کنید

  •  preprocessing : در این مرحله عملیات حذف نویز های اولیه و آستانه گیری لز تصویر انجام میشه که از جمله این روش ها آستانه گیری otsu و sauvola هستش .
  • registeration : در این مرحله بایستی میزان چرخش تصویر را بدست بیارید .در این مرحله به صورت همزمان می تونید عملیات تشخیص layout تصویر ورودی را انجام بدید .که از روش های مختلفی می توان استفاده کرد که یکی از آنها استفاده  از روش دم دستی هاف خطی هستش.
  • normalization : در این مرحله بایستی خطوط موجود در صفحه را استخراج  و نرمال کنید و اطلاعاتی راجع به هر خط استخراج کنید مثل Baseline
  • segmentation : در این مرحله در صورت پیوستگی حروف بایستی حروف های چسبیده به هم را از هم جدا کنید.
  • feature extraction : در این مرحله بابیستی از هر کدام از حروف ویژگی های بدست بیاورید با این داده ها بتوانید تصویرتان را توصیف کنید.
  • classification : در این مرحله ویژگی های استخراج شده در مرحله قبل را به یک کلاسیفیر آموزش داده و در هنگام اجرای ocr کلاسیفیر را تست می کنید.

برای کاری که شما قصد انجامش را دارید پس از عملیات پیش پردازش شما بایستی نواحی نوشته را مکان یابی کنید که این کار میشه کاری شبیه به layout recognition پس از آن می تونید برای استخراج ویژگی از projection افقی و عمودی استفاده کنید و برای کلاسیفیر هم از knn استفاده کنید.

یک نمونه از ocr ساده با OpenCV در اینجا هستش.

پاسخ داده شده دی 22, 1392 بوسیله ی مصطفی ساتکی (امتیاز 21,998)   24 34 75
ویرایش شده مرداد 27, 1393 بوسیله ی BlueBlade
بسیار سپاسگذار از پاسخگویی به موقع شما .
تا حدودی با فرآیند ocr آشنا شدم. حال بر اساس مراحلی که فرمودید قصد دارم هر قسمت را انجام دهم. من تازه با دنیای opencv آشنا شدم. در مرجعی که شما معرفی کردید کد هایی مربوط به preprocessing نوشته شده است اما من نمی دانم چطور باید این کد ها را در c++ وارد کنم تا به جواب قسمت اول برسم. در c++ ، ساختار کلی هر برنامه  بعد از ساخت یک پروژه ایجاد می شود که کاربر با توجه به کاری که قرار است انجام دهد  اقدام به فراخوانی header و library می کند  بعد از معرفی توابعی که باید فراخوانی شوند و ثوابت تعریف شده کد نویسی آغاز می شود. . من تا الان 40 کد ساده در مورد پردازش تصویر و فیلم با opencv نوشته ام و همه آنها نیز به خوبی جواب داده اند. اما فرآیند ocr مراحل مختلفی دارد که باید گام به گام آنها را انجام دهم.
در مرجع معرفی شده، یک سری کد برای پیش پردازش حروف نوشته شده است اما من نمی دانم چگونه باید آنها را عملی کنم  و چه قسمت های دیگری  باید به برنامه اضافه نمایم . لطفا بهم بفرمایید که برنامه رو باید چطوری بنویسم تا قسمت پیش پردازش آن انجام شود. به نظر شما آیا راه راحت تر یا ایده ساده تری برای پردازش حروف به جای ocr وجود دارد؟
در سایت های خوب ایرانی معمولا مهندسان جوان سعی می کنند با همت  خود و استفاده از اطلاعات دیگران کارهای سخت را انجام دهند. می توان پروژه سنگین ocr را به کمک همدیگر انجام داد و کد های نوشته شده را تحلیل کرد تا به درک خوبی از برنامه نویسی برسیم. با تشکر فراوان.
لطفا در صورت امکان راهنمایی ام بفرمایید .
با سلام مجدد
لطفا در نحوه نوشتن کد ocr غیر تجاری راهنماییم کنید.
با تشکر
سلام توی یک تاپیک دیگه بپرسین .
...