当前位置: 首页 > 知识库问答 >
问题:

在pictureBox中显示cv::Mat (opencv 2.4.3)

申高峰
2023-03-14

我需要使用openFileDialog读取Mat格式的图像,并将其显示在pictureBox中(在VisualC/VisualStudio2010中)。

我找了很多,但找不到答案。

我正在使用此代码

openFileDialog1->Filter = "JPEG files (*.jpg)|*.jpg|Bitmap files (*.bmp)|*.bmp";
if(openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK)
{
    Mat img;
    img = imread(openFileDialog1->FileName, CV_LOAD_IMAGE_COLOR);
    pictureBox1->Image = (gcnew Bitmap(img.size().width,
                                            img.size().height,
                                            img.widthStep,
                                            Imaging::PixelFormat::Format24bppRgb,
                                            (IntPtr)img.data));

}

共有2个答案

赏成益
2023-03-14

你需要像这样设置Picturebox的调色板:

ColorPalette^ palette = pictureBox1->Image->Palette;
UInt32 Alpha = 0xFF;
UInt32 Intensity;

for (System::UInt16 i = 0; i < palette->Entries->Length; ++i)
{

    Intensity = i * 0xFF / 255;

    palette->Entries[i] = Color::FromArgb(static_cast<int>(Alpha),
                                          static_cast<int>(Intensity),
                                          static_cast<int>(Intensity),
                                          static_cast<int>(Intensity));
}

pictureBox1->Image->Palette = palette;
益锦程
2023-03-14

这个问题在这里已经有了答案:

根据您的要求,您可以这样做:

Mat img;
img = imread(openFileDialog1->FileName, CV_LOAD_IMAGE_COLOR);

System::Drawing::Graphics^ graphics = pictureBox1->CreateGraphics();
System::IntPtr ptr(img.ptr());
System::Drawing::Bitmap^ b  = gcnew System::Drawing::Bitmap(img.cols,img.rows,img.step,System::Drawing::Imaging::PixelFormat::Format24bppRgb,ptr);
System::Drawing::RectangleF rect(0,0,pictureBox1->Width,pictureBox1->Height);
graphics->DrawImage(b,rect);
 类似资料:
  • 在我的应用程序中,我有一个通过引用接收CV::MAT对象的函数。下面是函数的声明: 这个函数是递归的,在主函数的第一次调用中并不真正需要aaa,所以我只是声明了一个空aaa来将它传递给函数调用。在随后的递归调用中,function生成自己的ch Mat对象。 Main.cpp:75:错误:从“CV::MAT(*)()”类型的临时值初始化“CV::MAT&”类型的非常量引用无效。H:21:错误:在传

  • 因此,我有一段html,其中包括一个mat表单字段,该字段有一个mat select和一个mat选项。这些mat选项是从服务器生成的,它们有一个图像,当选择一个选项时,我需要在mat select中显示该图像(每个选项都有自己的图像) 每次选择新选项时,我都要在mat select中显示选项标签和图像。 我读过mat select触发器,但对我来说没有任何效果。

  • 我有C/C++源代码(在Windows上运行良好)将输入帧转换为新帧。 > 将byte[]帧从Java转换为JNI jarrayByte 将jarrayByte转换为Jyte* 从JByte*创建新的cv::mat原始代码* } 我的Java代码:

  • PictureBox控件用于在表单上显示图像。 控件的Image属性允许您在设计时或运行时设置图像。 让我们通过从工具箱拖动PictureBox控件并将其放在窗体上来创建一个图片框。 PictureBox控件的属性 以下是PictureBox控件的一些常用属性 - Sr.No. 财产和描述 1 AllowDrop 指定图片框是否接受用户拖动的数据。 2 ErrorImage 获取或指定在图像加载过

  • 问题内容: 老实说,我很惊讶到目前为止还没有人遇到过这种情况。我正在将图片从OpenCV加载到cv :: Mat中,在通过套接字发送之前,我想对它进行base64编码。 对于base64,我使用的是libb64,因为它是Debian / Ubuntu的本机,并且易于使用且非常快速。编码函数将std :: ifstream作为参数,并输出std :: ofstream。 我真的不知道如何从cv ::