当前位置:   article > 正文

Opencv 解决BGR转YUV调用cvtColor函数程序崩溃问题

Opencv 解决BGR转YUV调用cvtColor函数程序崩溃问题

将cv::Mat BGR格式转YUV格式时调用cvtColor函数导致程序崩溃原因:
原因在于cv::cvtColor(bgrImg, yuvImg, COLOR_BGR2YUV_I420);

函数中的bgrImg的尺寸必须是偶数的,若宽或高为奇数,则调用时会崩溃。

解决方法:
在调用cvtColor前可以先将rgbImg的尺寸裁剪为最近的偶数:

  1. cv::Mat bgrImg= cv::imread(imgPath); // 读入是BGR模式
  2. int evenRows = bgrImg.rows / 2 * 2;
  3. int evenCols = bgrImg.cols / 2 * 2;
  4. // 裁剪
  5. cv::Rect m_select = Rect(0, 0, evenCols, evenRows);
  6. Mat cropImg = bgrImg(m_select);
  7. Mat yuvImg;
  8. cv::cvtColor(cropImg , yuvImg, COLOR_BGR2YUV_I420);

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/958389
推荐阅读
相关标签
  

闽ICP备14008679号