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影像就不會發生翻轉前後重疊的有趣現象
全站熱搜