ورود

View Full Version : کمک در مورد خواندن یه عکس



ehsanarn
سه شنبه 02 اسفند 1390, 21:43 عصر
سلام به تمام دوستان
یه کمکی بهم بکنید میخوام یه عکس را بخونم و ماتریس عکس را بدست بیارم

shahmohammadi
سه شنبه 02 اسفند 1390, 23:49 عصر
سلام.
اگر عكس از نوع bmp باشه مي شه به راحتي اين كار رو انجام داد چون ماتريس تصورير در فايل ذخيره مي شه. اما اگراز نوع jpg باشه يكم سخته چون به صورت فشرده ذخيره شده و الگوريتم خاصي براي دكد كردن مي خاد.
ساختار فايل هاي بيتمپ (http://atlc.sourceforge.net/bmp.html#_toc381201084)
كلاس بار گذارنده بيتمپ (http://www.kalytta.com/bitmap.h)
اين رو هم بگم كه در فايل هاي بيت مپ (bmp) پيكسل ها به ترتيب ماتريس ذخيره نميشند. سطرها از پايين به بالا ذخيره مي شوند.
اين لنيك (http://en.wikipedia.org/wiki/BMP_file_format) هم مي تونه مفيد باشه.

مصطفی ساتکی
چهارشنبه 03 اسفند 1390, 00:26 صبح
bitmap انواع گوناگونی داره این مدلی که تو windows ازش استفاده میشه به صورت interleaved هستش یعنی مقادیر رنگ ها به صورت BGR توشون ذخیره میشه و مدل دیگر مدل un interleaved هستش که مقادیر به صورت همه b ها همه g و همه r ها می باشد اطلاعات اولیه bitmap رو اصطلاحاً هدر اطلاق میشه . در واقع از طریق این اطلاعات می تونیم bitmap رو load کنیم که signature تصویر جز اولین بایت و بعد اطلاعات مربوط به ابعاد و widthstep و عمق رنگ هستش . البته در bitmap از نوع index شما بایستی palette رو خودتون تنظیم کنید در اینجا محتوای تصویر دیگه rgb نیست بلکه یک اعداد 0 تا 255 هستند و بعد از هدر اطلاعات رنگ مربوط به هر index هم ذکر می گردد bitmap در حالت raw هم می تونه تعریف بشه که فقط شامل محتوا هستش یعنی ما از palette و دیگر اطلاعات مطلع هستیم معادل اون تو X11 هم داریم که به نام pixmap هستش.
اون مطلبی رو هم که در بالا ذکر شد جهت scanline هستش که با -1 یا 1 نشان داده میشه که اکثر -1 هستش یعنی جهت از پایین به بالاست. اما نکته دیگری که وجود داره در مورد alignment می باشد که در هنگام ذخیره فیزیکی به صورت stream ذحیره میشه ولی در حافظه به صورت alignment 4 قرار داده میشه بیت های اضافی در هر سطر که باقیمانده widh/4 برابر با صفر بشه این تکنیک در واقع تمهیداتی جهت دستیابی سریع تر به bitmap می باشد.

m_basij
سه شنبه 23 اسفند 1390, 00:40 صبح
دوست عزیز من چند وقت پیش در این زمینه تحقیق کردم اصلا نمی صرفه بخواهی یاد بگیری که ساختار این فرمت ها به چه شکلیه. کتابخانه های زیادی میان و دکد می کنند و دسترسی به پیکسل های عکسو یعنی همون ماتریس عکسو باست مهیا می کنند. از کتابخانه FreeImage استفاده کن. این کتابخانه فرمت رو میخونه و ماتریسش رو تشکیل میده توی مموری. یک راهنمایی همراهش هست کم حجمم هست اتفاقا توضیحات کاملی در مورد چگونگی کار باش داده.
البته نمیدونم حرف درستیه بگی ماتریسش رو تشکیل میده یا نه ولی خوب استفاده کردم دیگه:لبخندساده:

shahmohammadi
سه شنبه 23 اسفند 1390, 01:58 صبح
دوباره سلام.
من اين كتاب خونه رو كار نكردم. ولي با كتابخونه sdl كار كردم و در اين كتابخونه براي كار با تصاوير به صورت پيكسلي بايد با اصطلاحاتي كه در ساختار بيتمپ وجود داره آشنا باشيم.
براي همين بود كه ديدم بدرد مي خوره.