我正在尝试使用pictureBox->Image (Windows Forms)来显示cv::Mat图像(openCV)。我不想将图片保存为文件(因为我想每隔100ms重置一次图片)。我在这里找到了这个主题:How to display a cv::Mat in a Windows Form application?
当我使用此解决方案时,图像仅显示为白色。我想我拿错了PixelFormat。那么如何计算出我需要的PixelFormat呢?我还没有在cv::Mat中看到任何方法来获取有关这方面的信息。或者这取决于我用来创建此cv::Mat的图像源?到目前为止,谢谢:)
这里我拿了一个屏幕。它不是完全白色的。所以我猜里面有一些颜色信息。但也许我错了。Screen
发布于 2012-06-02 01:17:27
cv::Mat.depth()返回像素类型,例如。CV_8U表示8位无符号等,cv::Mat.channels()返回通道数,对于彩色图像,通常为3
对于“常规图像”,opencv通常使用8位BGR颜色顺序,它应该直接映射到Windows位图或大多数Windows库中。
所以你可能想要system.drawing.imaging.pixelformat.Format24bppRgb,我不知道它使用什么顺序( RGB或BGR),但是你可以使用带有CV_BGR2RGB的opencv cv::cvtColor()来转换成RGB
发布于 2012-06-03 23:20:39
谢谢你的帮助!问题出在别的地方。我只是没有为Image对象分配内存。所以没有什么可以真正展示的。在headerFile中使用cv::Mat img;,在构造函数(ocvcamimg类)中使用img = new cv::Mat(120,160,0);使其正常工作。(ocvcamimg->captureCamMatImg()返回img)。
https://stackoverflow.com/questions/10850492
复制相似问题