![]() |
نمایش تصویر خاکستری در pictureBox
سلام
برای برنامه ای نیاز دارم تصویر رنگی که توسط کد زیر به تصویر خاکستری تبدیل کردم را در VC++ 2010 در pictureBox نمایش بدهم: كد:
Mat src_gray; كد:
System::Drawing::Graphics^ graphics = pictureBox1->CreateGraphics(); اگر کد را به صورت زیر تغییر دهم، تصویر یک بار نمایش داده می شود ولی با رنگهای نادرست: كد:
System::Drawing::Bitmap^ b = gcnew System::Drawing::Bitmap(grayImage.cols,grayImage.rows,grayImage.step,System::Drawing::Imaging::PixelFormat::Format8bppIndexed,ptr); |
نقل قول:
به نام خدا تصویر خاکستری که می فرمایید سه بار نمایش داده میشه از کجا بدست آمده؟ خودتان تولید می کنید یا از فایل می خوانید. ممکن است اگر از فایل می خوانید آن تصویر ظاهرا سیاه و سفید باشد ولی واقعا در قالب یک فایل رنگی ذخیره شده باشد. حتما می دانید اگر مقادیر سه لایه r, b, g دارای مقدار یکسان باشند تصویر سیاه و سفید دیده می شود ولی در حقیقت سه لایه دارد. بررسی کنید اگر نشد مجدد بحث رو دنبال می کنیم موفق باشید . |
تصویری که سه بار نمایش داده می شود تصویری است که توسط دستور imread از ورودی خوانده ام و با دستور
كد:
cvtColor( src, src_gray, CV_BGR2GRAY ); احتمالاً علت سه بار نمایش دادن آن هم این است که هر سه لایه r، g و b را کنار هم نمایش می دهد و چون تبدیل به سطح خاکستری شده هر سه سیاه و سفید هستند ولی مشکل این است که نمی دانم چطور باید فقط یکی را نمایش بدهم. ضمناً اگر از Format24bppRgb استفاده کنم سه تصویر خاکستری کنار هم می دهد، اگر از Format16bppGrayScale استفاده کنم خطا می دهد و اگر از Format8bppIndexed استفاده کنم یک تصویر با رنگ های نادرست نشان می دهد. متاسفانه نتوانستم خروجی را اینجا قرار دهم تا نتیجه را ببینید. متشکرم |
به نظر من دستور cvtColor به این صورت که نوشتید تصویر رنگی رو به تصویر خاکستری تبدیل می کنه
یعنی یه تصویر با سه کانال به یه کانال تبدیل میشه این طوری نیست که می گین همون سه کاناله با مقادیر یکسان. فکر نکنم این طوری باشه. همون خروجیش یه کانالست خیلی راحت وقتی خط به خط اجرا می کنین چک کنین ببینین src_gray یه کانالست یا سه کاناله که احتمالا یه کاناله باید باشه یعنی CV_8UC1 هست |
نقل قول:
به نام خدا قطعه کد زیر را ببینید، ان شاالله مشکلتان را حل کند (پارامتر IPL_DEPTH_8U در حل مشکل شما کلیدی است) كد:
// C |
نقل قول:
|
نقل قول:
كد:
Mat src_gray (src.size(), CV_8U); |
زمان محلي شما با تنظيم GMT +3.5 هم اکنون ۱۲:۰۵ قبل از ظهر ميباشد. |
Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0 ©2007, Crawlability, Inc.