سلام
برای برنامه ای نیاز دارم تصویر رنگی که توسط کد زیر به تصویر خاکستری تبدیل کردم را در VC++ 2010 در pictureBox نمایش بدهم:
كد:
Mat src_gray;
cvtColor( src, src_gray, CV_BGR2GRAY );
کدی که برای نمایش در pictureBox استفاده می کنم به صورت زیر است:
كد:
System::Drawing::Graphics^ graphics = pictureBox1->CreateGraphics();
System::IntPtr ptr(src.ptr());
System::Drawing::Bitmap^ b = gcnew System::Drawing::Bitmap(src.cols,src.rows,src.step,System::Drawing::Imaging::PixelFormat::Format24bppRgb,ptr);
System::Drawing::RectangleF rect(0,0,control->Width,control->Height);
graphics->DrawImage(b,rect);
این کد تصویر رنگی را بدون مشکل نمایش می دهد ولی وقتی تصویر خاکستری به آن می دهم، تصویر را سه بار کنار هم تکرار می کند.
اگر کد را به صورت زیر تغییر دهم، تصویر یک بار نمایش داده می شود ولی با رنگهای نادرست:
كد:
System::Drawing::Bitmap^ b = gcnew System::Drawing::Bitmap(grayImage.cols,grayImage.rows,grayImage.step,System::Drawing::Imaging::PixelFormat::Format8bppIndexed,ptr);
ممنون می شم اگه راهنمایی کنید که چه تغییری در کد باید ایجاد کنم تا تصویر خاکستری به صورت صحیح نمایش داده بشه