Ваша проблема в этой строке:
cv::polylines(mat, v, true, cv::Scalar((int)(r/255.0), (int)(g/255.0), (int)(b/255.0), 255), 4);
Это всегда черный цвет, потому что r
g
и b
уже являются числами от 0 до 255 (вы делали это и раньше), если вы поделите на 255, это будет между 0 и 1, а затем вы разыграете это к int, которое даст вам в большинстве случаев 0, который черный.
Если mat
имеет тип CV_8UC4, тогда все в порядке:
cv::polylines(mat, v, true, cv::Scalar(r, g, b, 255), 4);
, если mat
имеет тип CV_32F, тогда можно использовать значения от 0-1
cv::polylines(mat, v, true, cv::Scalar((r/255.0), (g/255.0), (b/255.0), 255), 4);
Поскольку вы сказали, что вы новичок в OpenCV, будьте осторожны с цветовым пространством. OpenCV обычно использует BGR (A) в большинстве функций (imshow, imwrite и т. Д.), Но здесь скаляр - RGBA. Поэтому убедитесь, что он находится в том же цветовом пространстве. Это на тот случай, если он не закрашивает намеченную красную линию, а синюю.