我正在使用VC++和OpenCV應用程序,我將圖像加載到picturBox中並對它們進行一些OpenCV操作,我將加載的圖像分配到IplImage中以對其進行處理但隨後再次分配處理的圖像到圖片框,我寫這個代碼來加載從打開文件對話框選入的IplImage圖像,二值化,然後將圖像重新分配二值化圖像回圖片框 代碼:如何在pictureBox VC++中顯示二進制圖像
const char* fileName = (const char*)(void*)
Marshal::StringToHGlobalAnsi(openFileDialog1->FileName);
IplImage *img=cvLoadImage(fileName,CV_LOAD_IMAGE_COLOR);
int width=img->width;
int height=img->height;
IplImage *grayScaledImage=cvCreateImage(cvSize(width,height),IPL_DEPTH_8U,1);
cvCvtColor(img,grayScaledImage,CV_RGB2GRAY);
cvThreshold(grayScaledImage,grayScaledImage,128,256,CV_THRESH_BINARY);
this->pictureBox1->Image=(gcnew
System::Drawing::Bitmap(grayScaledImage->width,grayScaledImage->height,grayScaledImage->widthStep,
System::Drawing::Imaging::PixelFormat::Format24bppRgb,(System::IntPtr)grayScaledImage->imageData));
,但我沒有找到顯示二進制映像的格式,有關於此的任何幫助。
原始圖像:
轉換的圖像:
System :: Drawing :: Imaging如何在pictureBox中進行轉換並顯示圖像? –
@Eslam如果你想在.net框中使用灰度圖像,然後告訴它使用灰度像素類型而不是24bppRgb –
我試圖使用Format16bppGrayScale,但它會拋出一個異常 –