5

我正在尝试使用 pictureBox->Image (Windows Forms) 来显示 cv::Mat 图像 (openCV)。我想这样做而不将图像保存为文件(因为我想每 100 毫秒重置一次图像)。我刚刚在这里找到了该主题:如何在 Windows 窗体应用程序中显示 cv::Mat?

当我使用这个解决方案时,图像看起来只是白色的。我想我拿错了 PixelFormat。那么如何找出我需要的 PixelFormat 呢?没有在 cv::Mat 中看到任何方法来获取相关信息。或者这是否取决于我用来创建这个 cv::Mat 的图像源?到目前为止感谢:)

在这里我拍了一个屏幕。它不是完全白色的。所以我想有一些颜色信息。但也许我错了。 屏幕

4

2 回答 2

3

cv::Mat.depth()返回像素类型,例如。CV_8U 用于 8 位无符号等,而cv::Mat.channels()返回通道数,对于彩色图像通常为 3

对于“常规图像”,opencv 通常使用 8 位 BGR 颜色顺序,应该直接映射到 Windows 位图或大多数 Windows 库。

所以你可能想要system.drawing.imaging.pixelformat.Format24bppRgb,我不知道它使用什么顺序(RGB或BGR)但你可以使用opencv cv::cvtColor()和CV_BGR2RGB来转换为RGB

于 2012-06-01T17:17:26.923 回答
1

谢谢您的帮助!问题是别的。我只是没有为图像对象分配内存。所以没有什么可以真正展示的。在headerFilecv::Mat img;img = new cv::Mat(120,160,0);构造函数(ocvcamimg 类)中使用它可以工作。(ocvcamimg->captureCamMatImg()返回img)。

于 2012-06-03T15:20:39.140 回答