PDA

View Full Version : سوال: تشخيص رنگ



shytonak
شنبه 02 آذر 1387, 14:23 عصر
سلام دوستان.ميشه يه راهنمايي كنيد كه چطور يه رنگ خاص رو تو يه تصوير شناسايي كنيم مثلا برنامه بياد كه تصوير رو چك كنه اگه تو تصوير رنگ قزمز بود تو يه ليبل به ما نمايش بده.

soshiant
شنبه 02 آذر 1387, 16:15 عصر
سلام راه حلش اینه که از حلقه For تو در تو استفاده کنی و هر پیکس را بطور مجزا get کنی تا مقایسه RGB انجام بشه اگه از vb استفاده میکنی پیشنهاد میکنم از توابع APi ویندور استفاده کن (setpixel , get pixel) اما من با C# این کارو انجام ندادم.

shask00l
شنبه 02 آذر 1387, 21:06 عصر
کلاس system.drawing.color 1 متد داره که برای شناسایی رنگه . میتونی از اونم استفاده کنی

shytonak
یک شنبه 03 آذر 1387, 09:16 صبح
دوست عزیز میشه لطف کنید یه مثال بزنید.و اینکه سرعت این کار چقدر هست برای پیدا کردن رنگ مورد نظر آیا زمان زیادی طول میکشه؟

newgoldenman
یک شنبه 03 آذر 1387, 12:41 عصر
سلام.
كار شما با استفاده از توابع getpixel ؤ setpixel راه ميفته! ولي، cpu ميره رو هوا !! به نظر من بايد توي مقالات مربوط به اين موضوع جستجو كنيد و دنبال الگوريتم خاص و شيوه ي بهينه براي انجام اين عمل بگرديد و پيدا كنيد جواب سوالتون رو.

در حاشيه:
نرم افرار FastStone Capture به نظر من يكي از بهترين و پرسرعت ترين نرم افزارهاي مشابه خودش هست كه كارش با عكس و پيكسل و اندازه گيري هاي ريز و ... هست. يدونه "قطره چكان" هم داره كه دقيقاً همون چيزيه كه شما ميخواين! روي هم پيكسل كه برين، بهتون ميگه كد رنگش رو. فكر كنم بتونه ايده ي مفيدي بهتون بده. و نيز اينكه اگر بتونيد الگوريتمشون رو بفهميد چيه، همه چيز حله!!
اينهم آدرسشون: www.faststone.org

موفق باشيد

newgoldenman
یک شنبه 03 آذر 1387, 12:41 عصر
سلام.
كار شما با استفاده از توابع getpixel ؤ setpixel راه ميفته! ولي، cpu ميره رو هوا !! به نظر من بايد توي مقالات مربوط به اين موضوع جستجو كنيد و دنبال الگوريتم خاص و شيوه ي بهينه براي انجام اين عمل بگرديد و پيدا كنيد جواب سوالتون رو.

در حاشيه:
نرم افرار FastStone Capture به نظر من يكي از بهترين و پرسرعت ترين نرم افزارهاي مشابه خودش هست كه كارش با عكس و پيكسل و اندازه گيري هاي ريز و ... هست. يدونه "قطره چكان" هم داره كه دقيقاً همون چيزيه كه شما ميخواين! روي هم پيكسل كه برين، بهتون ميگه كد رنگش رو. فكر كنم بتونه ايده ي مفيدي بهتون بده. و نيز اينكه اگر بتونيد الگوريتمشون رو بفهميد چيه، همه چيز حله!!
اينهم آدرسشون: www.faststone.org

موفق باشيد

newgoldenman
یک شنبه 03 آذر 1387, 12:48 عصر
سلام.
كار شما با استفاده از توابع getpixel ؤ setpixel راه ميفته! ولي، cpu ميره رو هوا !! به نظر من بايد توي مقالات مربوط به اين موضوع جستجو كنيد و دنبال الگوريتم خاص و شيوه ي بهينه براي انجام اين عمل بگرديد و پيدا كنيد جواب سوالتون رو.

در حاشيه:
نرم افرار FastStone Capture به نظر من يكي از بهترين و پرسرعت ترين نرم افزارهاي مشابه خودش هست كه كارش با عكس و پيكسل و اندازه گيري هاي ريز و ... هست. يدونه "قطره چكان" هم داره كه دقيقاً همون چيزيه كه شما ميخواين! روي هم پيكسل كه برين، بهتون ميگه كد رنگش رو. فكر كنم بتونه ايده ي مفيدي بهتون بده. و نيز اينكه اگر بتونيد الگوريتمشون رو بفهميد چيه، همه چيز حله!!
اينهم آدرسشون: www.faststone.org

موفق باشيد

shytonak
دوشنبه 04 آذر 1387, 14:40 عصر
دوست عزيز من فقط ميخوام برنامه بگه آيا از اين رنگ تو اين تصوير استفاده شده يا نه.

shask00l
سه شنبه 05 آذر 1387, 21:24 عصر
ببین دوست جان گوگل رو برای همین کارها اختراع کردند .. من هم در این زمینه اطلاعاتم بیشتر از شما نیست ولی میدونم کار رو چطور دسته بندی کنم ...

این کار از 2 مرحله تشکیل میشه . اول اینکه بتونی 1 پیکسل رو بخونی و رنگ توشو با مقدار دلخواه خودت مقایسه کنی و دوم اینکه این شرط رو بزاری توی 1 حلقه که به تعداد پیکسلهای تصویرت تکرار بشه ( دوتا حلقه تو در تو) .

خوب در مورد حلقه که فکر نمیکنم مشکلی داشته باشی .
در مورد خوندن رنگ هم که گوگل هست ...... ببین ..

http://www.vbforums.com/showthread.php?t=491397
http://www.a1vbcode.com/app-4191.asp

تازه از تمام این حرفا هم که بگذریم .. مگه msdn مرده ؟
http://msdn.microsoft.com/en-us/library/system.drawing.bitmap.getpixel.aspx

خب . حالا فرض میکنیم شما اصلا به اینترنت هم دسترسی نداری ... قبول ؟

شما برای نوشتن برنامه از ویژوال استودیو استفاده میکنید و برای نمایش دادن عکس از picturebox که اون هم تصویر رو بصورت کلاس bitmap نشون میده .
همون کلاس ... یعنی bitmap یک متد داره به نام getpixel که میتونی مستقیما باهاش رنگ رو از توی تصویرت بخونی .

اینو ببین :


Dim myBitmap As New Bitmap("Grapes.jpg")
Dim pixelColor As Color = myBitmap.GetPixel(50, 50)


ok ?