opencv在将RGB模式转YUV模式调用cvtColor函数导致程序崩溃原因
原因在于cv::cvtColor(rgbImg, yuvImg, COLOR_BGR2YUV_I420);
函数中的rgbImg的尺寸必须是偶数的,若宽或高为奇数,则调用时会崩溃。
解决方法:
在调用cvtColor
前可以先将rgbImg的尺寸裁剪为最近的偶数:
cv::Mat rgbImg= cv::imread(imgPath); // 读入是BGR模式
int evenRows = rgbImg.rows / 2 * 2;
int evenCols = rgbImg.cols / 2 * 2;
// 裁剪
cv::Rect m_select = Rect(0, 0, evenCols, evenRows);
Mat cropImg = rgbImg(m_select);
Mat yuvImg;
cv::cvtColor(cropImg , yuvImg, COLOR_BGR2YUV_I420);