واضح آرشیو وب فارسی:سایت ریسک: View Full Version : پردازش تصوير fazi24-11-2006, 07:52 AMسلام من يك سوال دارم . همونطور كه مي دونيد يه عكس با پسوند tif يه فايل كه فقط شامل يك سري عدد . حالا من مي خوام از اين همه عدد پشت سر هم عكس رو توليد كنم يا به زبون ديگه عكس رو displayكنم . كي كد اين كار رو به زبان C# بلده؟ someone24-11-2006, 04:01 PMسلام. متوجه منظورتون نشدم. بيشتر توضيح بديد. ميخوايد از يك Stream تصوير توليد كنيد؟ يا فقط مي خوايد يك تصوير tif رو نشون بديد؟ fazi24-11-2006, 10:44 PMسلامي ببين نشون دادن يه Stream . يعني فكر كن يه سري عدد پشت سر هم كه تشكيل يه عكس رو مي ده داخل يه فايلي به نام img.tif ذخيره شده و من ميخوام اين عدد ها ر بخونم و عكسي كه نشون دهنده اين اعداد روي صفحه نمايش نشون بدم . someone09-12-2006, 01:43 AMسلام. میتونید از stream ها در #C استفاده کنید. ولی باید با ساختار tif آشنا باشید. باید بدونید که Header فایل رو چطور بنویسید تنها کافی نیست که یک سری عدد رو به ترتیب پشت هم قرار بدید. باید از Codec خاصی استفاده کنید. چقدر آشنا هستید؟ تا حالا یه فایل bmp نوشتید؟ fazi12-12-2006, 02:36 PMببينيد من در اين مورد اصلا اطلاعات خاصي ندارم. ولي كاري كه مي خوام انجام بشه دقيقا اينه. يك فايل دارم كه پر از داده است . به اسم test.dat يك فايل پر از عدد . اصلا ديگه با tiff كاري ندارم. مي دونم كه اعدادي كه در اين فايل ذخيره شده هر كدوم نشون دهنده يك رنگ . مي خوام عكسي كه از اين اعداد به دست مي آد رو نشون بدم. ببينيد كد اين برنامه در دلفي مي تونه به صورت زير باشه. من اين كد رو به c# مي خوام. var i,j:integer; colo : Byte; fp : file of Byte; begin assignfile(fp,Name); reset(fp); for i:=1 to 2048 do for j:=1 to 2048 do begin read(fp,colo); form1.image1.canvas.Pixels[j-1,i-1]:=RGB(colo,colo,colo); end; end mohseni1234513-12-2006, 11:45 PMسلام. میتونید از stream ها در #C استفاده کنید. ولی باید با ساختار tif آشنا باشید. باید بدونید که Header فایل رو چطور بنویسید تنها کافی نیست که یک سری عدد رو به ترتیب پشت هم قرار بدید. باید از Codec خاصی استفاده کنید. چقدر آشنا هستید؟ تا حالا یه فایل bmp نوشتید؟ میشه در مورد codec و headr فایلها اموزشی چیزی بدی یا اینکه یه منبع معرفی کنی؟ و اگه نمیشه پس خواهشا طریقه نوشتن فایل bmp رو بگو اخه من دارم روی پردازش تصویر کار میکنم و و اونا رو به ماتریس تبدیل می کنم و ویرایش لازم رو روش انجام میدم ولی در سیو کردنش مشکل دارم fazi14-12-2006, 11:56 AMببین من یک کد برای کاری که می خوام انجام بدم نوشتم. این کد اجرا می شه و درست هم کار می کنه. فقط یکمی برنامه کند اجرا می شه. ببینید شما راه بهتری سراغ دارید . ************************************** using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; namespace WindowsApplication29 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } protected override void OnPaint(PaintEventArgs e) { Rectangle rect = new Rectangle(0, 0, 2048, 2048); e.Graphics.DrawImage(ima.ime1.sjd(), rect); } } } namespace ima { class ime1 { public static Bitmap sjd() { int j, c, l; l = 0; FileStream fs = File.Open("c: 1.dat", FileMode.Open); Bitmap res = new Bitmap(2048, 2048); Color cc; for (j = 0; j < 2048; j++) for (c = 0; c < 2048; c++) { int re = fs.ReadByte(); cc = Color.FromArgb(re,re,re); res.SetPixel(c, j, cc); l++; } fs.Close(); return res; } } } someone16-12-2006, 02:33 AMسلام. میبخشید جواب دادنم طول کشیده. یه مقدار سرم شلوغه. برنامه تون خیلی خوب نوشته شده. کندی به خاطر اندازه ی تصویر هست و البته SetPixel یه مقدارکند هست. شما در برنامتون 2048*2048 بار از این تابع و ReadByte استفاده میکنید. من پیشنهاد میکنم که اول محتویات file تون رو در حافظه Buffer کنید بعد رو داده ها کار کنید. someone16-12-2006, 02:36 AMمیشه در مورد codec و headr فایلها اموزشی چیزی بدی یا اینکه یه منبع معرفی کنی؟ و اگه نمیشه پس خواهشا طریقه نوشتن فایل bmp رو بگو اخه من دارم روی پردازش تصویر کار میکنم و و اونا رو به ماتریس تبدیل می کنم و ویرایش لازم رو روش انجام میدم ولی در سیو کردنش مشکل دارم سلام. سلام. یک فایل Bitmap شامل این قسمت ها هست : !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! بطور خلاصه وقتی می خواید یک Bitmap رو در حافظه load کنید مراحل به این شکل هست : اول به یک structure نیاز هست که BFH رو در خودش نگهداره این اطلاعات شاملfiletype, … filesize , میشه.دوم به یک structure نیاز هست که اطلاعات تصویر رو در خودش نگه داره یعنی BIH این ساختار اطلاعاتی مثل width , height , bitCount,…. رو در خودش نگه داری میکنه. سوم اطلاعات مربوط به Palette هست و چهارم اطلاعات خود Bitmap حالا برای ذخیره کردن یک فایل Bitmap باید به همین شکل عمل بشه یعنی اول نوشتن data های مربوط به فایل (size , type) و بعد data مربوط به Bitmap (width,height,bitCount) و بعد نوشتن data های مربوط به Bitmap هست. البته باید در نظر داشته باشید که از چه offset ی شروع به نوشتن کنید. مثلا در Offset 0 به اندازه ی 2Bytes دو حرف B وM قرار میگیره و در Offset 2 که 4Bytes هست اندازه ی فایل (File Header) و ....... در مورد Comprestion یا codec هم باید اضافه کنم معمولا از RLE استفاده میشه که در Offset 30 قرار داره. بحث خیلی مفصلی هست. اگه تحت Windows برنامه مینویسید می تونید از این دو structure استفاده کنید. BITMAPFILEHEADER BITMAPINFOHEADER در موردشون میتونید اطلاعات خوبی پیدا کنید. اگه با C# کار میکنید به راحتی میتونید از متود Save استفاده کنید که در کلاس Bitmap قرار داره. با چه زبانی کار میکنید و چه کامپایلری ؟ fazi16-12-2006, 07:44 AMمی دونید امتحان کردم. یعنی اول محتویات فایل رو توی آرایه قرار دادم بعد سعی کردم اون رو نمایش بدم ولی بازم کند بود. تابع های معادلی نیست که این کار رو سریعتر انجام بده ؟ آخه من باید کلی پردازش های دیگه هم روی این عکس انجام بدم اگه اینقده کند باشه که نمی شه. بزرگی عکس هم بخاطر اینه که یک تصویر ماهواره ای که از زمین گرفته شده. استاد ما رشته ش Remote Sensing بوده برای همین ما با این عکس ها کار می کنیم. mohseni1234516-12-2006, 12:08 PMسلام. سلام. یک فایل Bitmap شامل این قسمت ها هست : !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! بطور خلاصه وقتی می خواید یک Bitmap رو در حافظه load کنید مراحل به این شکل هست : اول به یک structure نیاز هست که BFH رو در خودش نگهداره این اطلاعات شاملfiletype, … filesize , میشه.دوم به یک structure نیاز هست که اطلاعات تصویر رو در خودش نگه داره یعنی BIH این ساختار اطلاعاتی مثل width , height , bitCount,…. رو در خودش نگه داری میکنه. سوم اطلاعات مربوط به Palette هست و چهارم اطلاعات خود Bitmap حالا برای ذخیره کردن یک فایل Bitmap باید به همین شکل عمل بشه یعنی اول نوشتن data های مربوط به فایل (size , type) و بعد data مربوط به Bitmap (width,height,bitCount) و بعد نوشتن data های مربوط به Bitmap هست. البته باید در نظر داشته باشید که از چه offset ی شروع به نوشتن کنید. مثلا در Offset 0 به اندازه ی 2Bytes دو حرف B وM قرار میگیره و در Offset 2 که 4Bytes هست اندازه ی فایل (File Header) و ....... در مورد Comprestion یا codec هم باید اضافه کنم معمولا از RLE استفاده میشه که در Offset 30 قرار داره. بحث خیلی مفصلی هست. اگه تحت Windows برنامه مینویسید می تونید از این دو structure استفاده کنید. BITMAPFILEHEADER BITMAPINFOHEADER در موردشون میتونید اطلاعات خوبی پیدا کنید. اگه با C# کار میکنید به راحتی میتونید از متود Save استفاده کنید که در کلاس Bitmap قرار داره. با چه زبانی کار میکنید و چه کامپایلری ؟ ببین من ویژوال بیسیک کار می کنم و به خاطر اینکه ویژوال محدودیت های زیادی داره شروع کردم به یادگیری سی و سی پلاس پلاس به خاطر همین اونقدرا حرفه ای نشدم تا اینا که گفتیو بفهمم میشه یه نمونه بزاری؟ someone16-12-2006, 10:55 PMدوباره سلام. یه نمونه کد براتون گذاشتم. همنطور که میبینید تمام مراحلی که در موردشون صحبت کردیم توش به کار رفته. این کد یه 24bits Bitmap ایجاد میکنه. بدون compression اگه مشکلی پیش اومد اطلاع بدید. !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! Mehran NZ31-01-2008, 08:03 PMسلام. سلام. یک فایل Bitmap شامل این قسمت ها هست : !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! بطور خلاصه وقتی می خواید یک Bitmap رو در حافظه load کنید مراحل به این شکل هست : اول به یک structure نیاز هست که BFH رو در خودش نگهداره این اطلاعات شاملfiletype, … filesize , میشه.دوم به یک structure نیاز هست که اطلاعات تصویر رو در خودش نگه داره یعنی BIH این ساختار اطلاعاتی مثل width , height , bitCount,…. رو در خودش نگه داری میکنه. سوم اطلاعات مربوط به Palette هست و چهارم اطلاعات خود Bitmap حالا برای ذخیره کردن یک فایل Bitmap باید به همین شکل عمل بشه یعنی اول نوشتن data های مربوط به فایل (size , type) و بعد data مربوط به Bitmap (width,height,bitCount) و بعد نوشتن data های مربوط به Bitmap هست. البته باید در نظر داشته باشید که از چه offset ی شروع به نوشتن کنید. مثلا در Offset 0 به اندازه ی 2Bytes دو حرف B وM قرار میگیره و در Offset 2 که 4Bytes هست اندازه ی فایل (File Header) و ....... در مورد Comprestion یا codec هم باید اضافه کنم معمولا از RLE استفاده میشه که در Offset 30 قرار داره. بحث خیلی مفصلی هست. اگه تحت Windows برنامه مینویسید می تونید از این دو structure استفاده کنید. BITMAPFILEHEADER BITMAPINFOHEADER در موردشون میتونید اطلاعات خوبی پیدا کنید. اگه با C# کار میکنید به راحتی میتونید از متود Save استفاده کنید که در کلاس Bitmap قرار داره. با چه زبانی کار میکنید و چه کامپایلری ؟ سلام من اصلا نمی دونم این کدکها چطوری کار می کنن فقط نصبش می کنم و استفاده می کنم حالا خیلی مشتاقم که در موردش و برنامه نویسیش بیشتر بدونم اگه یه مقاله یا کتاب کامل که از پایه نحوه نوشتن برنامش و توضیح بده( انگلیسی یا فارسی) ممنون می شم زبانم هم c++ هستش ممنون سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 398]