问题描述:最近在学水平集图像分割,在把目标的轮廓以红色线画在原始图像上时,我的原始图像变成蓝色了。
原因分析:
1、为了最真实的显示出原始图像,我用了下面加载图像的命令,
imgOrig = cvLoadImage(FileDlg.GetPathName(),CV_LOAD_IMAGE_ANYCOLOR);
2、最后显示出来的图像是3通道的RGB图像,我用cvGet2D获取原始图像的像素值,接着继续用cvSet2D把像素值赋给RGB图像,因为RGB图像的像素顺序是b,g,r,如果原始图像是灰度图像,那么灰度数值赋给了RGB图像的b分量,而g,r分量都是0,这就会出现显示结果蓝色的。
解决方法:应该以RGB格式加载图像,即使用下面的命令
imgOrig = cvLoadImage(FileDlg.GetPathName());
因为cvLoadImage的默认第二个参数是CV_LOAD_IMAGE_COLOR,即转换成三通道图像,
这样即使是灰度图像,也能正确
的进行像素赋值。