close

昨天在測試Basler雙影像Live時, 發現一個有趣現象,

m_frame1為目前影格

m_disp1為顯示影像

第一種狀況是直接將m_frame1顯示, 不經過複製一份

第二種狀況是複製一份m_frame1至m_disp1

if (m_camParam1.CamType == (int)CAMTYPE.Pylon)
{
m_pylonDev.Grab(m_camIndex1); // 第 m_camIndex1 支攝影機的進行影像擷取
m_frame1 = m_pylonDev.GetBufferMat(m_camIndex1); // 回傳該攝影機 image buffer(Mat格式)
if (m_camParam1.flipHorizontal)
CvInvoke.Flip(m_frame1, m_frame1, FlipType.Horizontal);
if( m_camParam1.flipVertical)
CvInvoke.Flip(m_frame1, m_frame1, FlipType.Vertical);
m_frame1.CopyTo(m_disp1); // 複製目前影像(m_frame1)到顯示影像(m_disp1)

}

假設有經過水平翻轉或垂直翻轉, 來源影像和目標影像為同一塊記憶體

例如:  Flip(m_frame1, m_frame1, FlipType.Horizontal)

當FPS (frames per second) 數值低的時候, 不會出錯

但是當FPS逐漸拉高至40 FPS, 慢慢看到轉換速度來不及,

由於第一種狀況使用同一塊記憶體

會同時看到翻轉前和翻轉後的有趣現象

但是如果多複製一份到m_disp1, 即第二種狀況

則Live影像就不會發生翻轉前後重疊的有趣現象

arrow
arrow
    全站熱搜

    me1237guy 發表在 痞客邦 留言(0) 人氣()