cvtColor(src, gray);报错,改成如下函数进行封装
void cvtColor_src(Mat &src, Mat &src_gray)
{
// 转换4通道
if (src.channels() == 4) {
cv::cvtColor(src, src_gray, CV_BGRA2GRAY);
}
// 转换3通道
else if (src.channels() == 3) {
cv::cvtColor(src, src_gray, CV_BGR2GRAY);
}
// 转换2通道
else if (src.channels() == 2) {
cv::cvtColor(src, src_gray, CV_BGR5652GRAY);
}
// 转换单通道
else if (src.channels() == 1) {// 单通道的图片直接就不需要处理
src_gray = src;
}
else { // 负数,说明图有问题 直接返回
src_gray = src;
}
}
本文档介绍了一个关于OpenCV中cvtColor函数报错的问题,作者提供了一个自定义的函数cvtColor_src来解决这个问题。该函数根据输入图像的通道数,智能选择合适的颜色空间转换方式,包括4通道、3通道、2通道和1通道的图像。对于错误的图像通道数,函数会直接返回原图像。这个封装有助于简化代码并提高鲁棒性。
146

被折叠的 条评论
为什么被折叠?



