赞
踩
将cv::Mat BGR格式转YUV格式时调用cvtColor函数导致程序崩溃原因:
原因在于cv::cvtColor(bgrImg, yuvImg, COLOR_BGR2YUV_I420);
函数中的bgrImg的尺寸必须是偶数的,若宽或高为奇数,则调用时会崩溃。
解决方法:
在调用cvtColor前可以先将rgbImg的尺寸裁剪为最近的偶数:
- cv::Mat bgrImg= cv::imread(imgPath); // 读入是BGR模式
- int evenRows = bgrImg.rows / 2 * 2;
- int evenCols = bgrImg.cols / 2 * 2;
- // 裁剪
- cv::Rect m_select = Rect(0, 0, evenCols, evenRows);
- Mat cropImg = bgrImg(m_select);
- Mat yuvImg;
- cv::cvtColor(cropImg , yuvImg, COLOR_BGR2YUV_I420);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。