问题遇到的现象和发生背景
我在进行霍夫直线检测学习时,最开始通过imread载入一张灰度图,后面在调用Canny(),在进行霍夫直线检测,最后通过for循环将每一根直线绘制出来,但是程序运行结果却是什么也没有绘制,直至我把imread那的第二个参数从IMREAD_GRAYSCALE改为IMREAD_COLOR(也就是默认值),程序运行结果才正常,想问问原因
问题相关代码,请勿粘贴截图
void hough_linesp_demo()//统计概率霍夫线变换
{
Mat src = imread("G:/CV/images/morph01.png", IMREAD_GRAYSCALE);
//调用imread读入一张灰色图片(用于直线检测的图片)
Mat binary;
Canny(src, binary, 80, 160, 3, false);
namedWindow("binary", WINDOW_AUTOSIZE);
imshow("binary", binary);
vector<Vec4i>lines;
HoughLinesP(binary, lines, 1, CV_PI / 180, 80, 200, 10);
Mat result = Mat::zeros(src.size(), src.type());
for (int i = 0; i < lines.size(); i++)
{
line(result, Point(lines[i][0], lines[i][1]),Point(lines[i][2],lines[i][3]), Scalar(0, 0, 255), 2, 8);
}
//利用for循环来绘制每一根直线,按照预期应该是正常显示,但是代码运行下什么都没绘制
imshow("Hough_linesp", result);
waitKey(0);
destroyAllWindows();
运行结果及报错内容


我的解答思路和尝试过的方法
我后面以为是canny要输入8bit的非单通道图像,但是我通过imread载入一张3通道8bit的默认图片,再用cvtColor(src,gray,BGR2GRAY),将其转为灰度图像,想测试一下我的猜想(按照我的猜想应该也是不能绘制的),但是运行结果打脸了,这顿操作后,程序正常运行

我想要达到的结果
求个解释,难道imread载入的灰度图和cvtColor()转换后的灰度图不是一回事吗,有什么区别