ورود

View Full Version : پیدا کردن رنگ قرمز توی عکس



krasus
سه شنبه 30 دی 1393, 02:07 صبح
سلام
من یه برنامه با C#‎‎‎‎ نوشتم که چند تا عکس رو به صورت عمودی زیر هم دیگه می چسبونه و بعد از محل خط های افقی قرمز رنگ عکسم رو برش میده.
مشکل انیجاست که این خطهای قرمز رنگی که از قبل با برنامه paint ویندوز روی عکس ایجاد کردم هرکدومشون به یه رنگی در میان (یعنی کد RGB شون یکم با هم فرق داره) حالا وقتی می خوام ارتفاع این خطهارو از روی رنگ قرمز خط پیدا کنم باید دنبال یه طیف رنگی از قرمز باشم نه یه کد RGB خاص از رنگ قرمز و من نمی تونم یه محدوده رنگی برای این رنگ قرمزم توی سیستم RGB پیدا کنم.
ممنون میشم یکی راهنماییم کنه که بتونم یه محدوده برای این قرمز توی سیستم RGB پیدا کنم.
127737

روی تصویر بالا کد زیر رو اجرا کردم و نتیجه عکس زیر شد.
127738
اگه به عکس دقت کنید می بینید که بعضی نقاط سفید رو بی خودی سبز کرده!:عصبانی++:
نمی دونم با سیستم HSV بد تعریفش کردم یا مشکل از چیز دیگه ای هست!
می خوام دقت کارم به قدری بالا باشه که فقط طیف رنگی قرمز رو پیدا کنه و بی خودی قسمت های دیگه رو پیدا نکنه.

rahnema1
سه شنبه 30 دی 1393, 06:56 صبح
سلام
فکر کنم بهتره از فرمت gif یا png برای عکس استفاده کنید
برنامه photofiltre را از اینترنت بگیرید
فایل تصویر را با برنامه باز کرده
و با فرمت gif ذخیره کنید

برای ذخیره با فرمت png از منوی image گزینه mode و سپس Indexed color را انتخاب کنید سپس تیک مربوط به diffusion را غیر فعال کنید و ok بزنید
تصویر را با فرمت png ذخیره کنید
حالا اگه خط قرمز بکشید دقیقا رنگش همونیه که میخواهید

krasus
سه شنبه 07 بهمن 1393, 02:20 صبح
از راهنمایی تون ممنونم.
اما می خوام توی زمینه تشخیص رنگ کارکنم. مواردی هم پیش میاد که نیاز به تشخیص یه طیف رنگی از قرمز باشه.
نمی دونم چرا برنامه بعضی نقاطی که قرمز نیستند رو تشخیص داده؟(البته تعداد این نقاط نسبت به نقاط کل صفحه خیلی کم هست.)

شرطی که برای تشخیص طیف رنگی قرمز استفاده کردم :


if ((pixelColor2.GetHue() > 320 || pixelColor2.GetHue() < 40) && (pixelColor2.GetSaturation() * 100) > 30 && (pixelColor2.GetBrightness() * 100) > 30)

rahnema1
سه شنبه 07 بهمن 1393, 07:16 صبح
از راهنمایی تون ممنونم.
اما می خوام توی زمینه تشخیص رنگ کارکنم. مواردی هم پیش میاد که نیاز به تشخیص یه طیف رنگی از قرمز باشه.
نمی دونم چرا برنامه بعضی نقاطی که قرمز نیستند رو تشخیص داده؟(البته تعداد این نقاط نسبت به نقاط کل صفحه خیلی کم هست.)


ببینید اگه بخواهید کارتون تمیز در بیاد بهتره حتی الامکان از این کارها پرهیز کنید یا حتی به جای استفاده از تصاویر gif شما مختصات ابتدا و انتهای هر پاراگرف ( یا ارتفاع پاراگراف) را ذخیره کنید که دیگه نخواهید پاراگراف ها را با استفاده از تشخیص رنگ جدا کنید
علت اینکه رنگ قرمز در تصویر شما به درستی نمایش داده نمیشه اینه که شما با استفاده از فرمت jpg تصویر را فشرده کردید که این فرمت باعث تغییر رنگ میشه
در هر صورت اگه با استفاده از مقادیر HSB بخواهید پیکسل پیکسل کار کنید هم حجم محاسبات زیاد میشه و هم ممکنه نتیجه مطلوب بدست نیاد بهتره از ColorMatrix برای تغییر طیف رنگ استفاده بشه
در تاپیک زیر پروژه تشخیص آیه قران بود که با ColorMatrix گفتم چیکار باید بشه
http://barnamenevis.org/showthread.php?469054