IImageData objIImageData = null;
//获取图像
if (null != m_objIGXStream)
{
//计时开始
// m_objStopTime.Start();
//1000
objIImageData = m_objIGXStream.GetImage(3000);
///objIImageData.GetBuffer()
//结束计时
// dElapsedtime = m_objStopTime.Stop();
}
IntPtr pImg = objIImageData.GetBuffer();
IntPtr pRGBImg = IntPtr.Zero;
//objIImageData = m_objIGXStream.GetImage(500);
//if (ignoreImage)
//{
// return;
//}
// Reduce the number of displayed images to a reasonable amount if the camera is acquiring images very fast.
// if (!stopWatch.IsRunning || stopWatch.ElapsedMilliseconds > 33)
{
//stopWatch.Restart();
if (hPylonImage != null && hPylonImage.IsInitialized())
{
hPylonImage.Dispose();
}
hPylonImage = new HImage();
hPylonImage.GenEmptyObj();
hPylonImage.Dispose();
width = (int)objIImageData.GetWidth();
height = (int)objIImageData.GetHeight();
//{
if (objIImageData.GetStatus() != GX_FRAME_STATUS_LIST.GX_FRAME_STATUS_SUCCESS)
{
//Util.Notify(string.Format("相机{0}数据损坏,采集失败", cameraIndex));
return;
}
//转换为Halcon图像显示
//把图像数据生成halcon图像
//pData:图像数据地址;
if (objIImageData.GetPixelFormat() == GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_MONO8)
{
//如果是黑白相机,
hPylonImage.GenImage1("byte", width, height, pImg/*frameData.GetBuffer()*/);
}
else //如果相机是彩色,需要把pixel format 改成RGB8Packed并保存
{
GX_VALID_BIT_LIST emValidBits = GX_VALID_BIT_LIST.GX_BIT_0_7;
emValidBits = __GetBestValudBit(objIImageData.GetPixelFormat());
pImg = objIImageData.ConvertToRGB24(emValidBits, GX_BAYER_CONVERT_TYPE_LIST.GX_RAW2RGB_NEIGHBOUR, false);
hPylonImage.GenImageInterleaved(pImg, "bgr", width, height, -1, "byte", width, height, 0, 0, -1, 0);
}