1
C++/CLI에서 그림 상자의 이미지를 :: MAT으로 변환하는 방법은 무엇입니까? System :: Drawing :: Bitmap^:: MAT
는C++/CLI에서 그림 상자의 이미지를 :: MAT으로 변환하는 방법은 무엇입니까? System :: Drawing :: Bitmap^:: MAT
는당신은 (이미지가 정말 비트 맵이라고 가정)을 Bitmap에 cast Drawing.Image 필요 감사드립니다.
그런 다음 System.Drawing.Bitmap을 잠그고 BitmapData의 Scan0 속성을 사용하여 내부 버퍼에 액세스합니다.
System::Drawing::Bitmap^bitmapFrame = safe_cast< System::Drawing::Bitmap^>(pictureBox1->Image);
BitmapData^ bmpData = bitmapFrame->LockBits(gcnew Rectangle(0, 0, bitmapFrame->Width, bitmapFrame->Height), System::Drawing::Imaging::ImageLockMode::ReadWrite,
bitmapFrame->Format);
try
{
void* data = bmpData.Scan0;
//use the data in the ::Mat constructor.
}
finally { bitmapFrame->UnlockBits(bmpData); }//Remember to unlock!!!
아마도 'LockBits'를 사용하여 픽셀 값의 배열을 가리키는 포인터를 얻고 싶을 것입니다. 이와 같이 :이 줄'Gdiplus :: Bitmap * enhanced = pictureBox1-> Image;'가이 에러를 내고 있기 때문에 http://stackoverflow.com/q/24655452/103167 –
이 작동하지 않습니다 : _IntelliSense : type의 값 "System :: Drawing :: Image ^"는 "Gdiplus :: Bitmap *"유형의 엔티티를 초기화하는 데 사용할 수 없습니다. _ –
물론 C++/CLI 구문을 사용해야합니다. 'System :: Drawing :: Bitmap'은 네이티브 클래스'Gdiplus :: Bitmap'을 둘러싼 .NET 래퍼입니다. –