cv :: Mat检测PixelFormat

时间:2012-06-01 12:42:09

标签: c++ opencv windows-forms-designer pixelformat

我正在尝试使用pictureBox-> Image(Windows窗体)来显示cv :: Mat图像(openCV)。我想这样做而不将图像保存为文件(因为我想每100毫秒重置一次图像)。 我刚刚在这里找到了这个主题:How to display a cv::Mat in a Windows Form application?

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

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

2 个答案:

答案 0 :(得分: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 < / p>

答案 1 :(得分:1)

感谢您的帮助!问题是别的。 我只是没有为Image Object分配内存。所以没有什么可以真正显示出来的。 在headerFile中使用cv::Mat img;并在构造函数(ocvcamimg类)中使用img = new cv::Mat(120,160,0);使其工作。 (ocvcamimg->captureCamMatImg()返回img)。