标量(0,255,0)在opencv中没有给出绿色线

Posted

技术标签:

【中文标题】标量(0,255,0)在opencv中没有给出绿色线【英文标题】:Scalar(0,255,0) does not give green colored line in opencv 【发布时间】:2014-05-01 11:00:03 【问题描述】:

我正在尝试在图像上绘制渐变线。我希望我的线条是绿色的,我使用标量(0,255,0)。不过,我只得到黑色。对于 Scalar(0,0,0) 我也变黑了。对于 Scalar(255,255,255) 我得到白色,但没有任何组合的其他颜色。部分代码如下:

line(visual_image,
     Point(x1*scaleFactor, y1*scaleFactor),
     Point(x2*scaleFactor, y2*scaleFactor),
     Scalar(0,255,0),
     1,8,0);

【问题讨论】:

检查 visual_image 的 type()。如果它是 0(gray) ,而不是 16 (rgb) 你不能在其中绘制颜色。 太棒了!这就说得通了。谢谢。那么有没有办法在灰色图像上绘制彩色线条? @HarshWardhan 有多少通道有灰色图像?那么你认为关于绿色的信息应该存储在哪里?” 【参考方案1】:

由于不能将彩色线条、圆圈等绘制成灰度图像,因此必须先将其转换为 3 通道:

Mat rgb;
cvtColor(visual_image, rgb, CV_GRAY2BGR); 
// now draw your lines:
line( rgb,
   Point(x1*scaleFactor, y1*scaleFactor),
   Point(x2*scaleFactor, y2*scaleFactor),
   Scalar(0,255,0),
   1,8,0);

【讨论】:

我的垫子是 bgr,当使用 cvtColor(visual_image, rgb, CV_GRAY2BGR);给出了一个异常原因,上面有 4 个通道,但是 Imgproc.Rectabgle(m1,m1, tlpoint, brpoint, newScalar(0,255,0)) 绘制了一个黑色矩形!【参考方案2】:

改成new Scalar(100,100, 0,255),.R,G,B,Alpha需要4个参数。

参考链接:https://www.programcreek.com/java-api-examples/?class=org.opencv.imgproc.Imgproc&method=circle

https://***.com/a/44352231/7408574

【讨论】:

这没有提供问题的答案。您可以search for similar questions,或参考页面右侧的相关和链接问题找到答案。如果您有一个相关但不同的问题,ask a new question,并包含指向此问题的链接以帮助提供上下文。请参阅:Ask questions, get answers, no distractions、How do I ask a good question?。 感谢 Shree,我刚刚找到了答案,并在上面修改了我的答案 我编辑你的答案并给出一个问题/答案格式的形状。如果需要,请编辑您的答案。

以上是关于标量(0,255,0)在opencv中没有给出绿色线的主要内容,如果未能解决你的问题,请参考以下文章

函数RGB(255,0,0)表示的是啥色

如何在python中强制标量的类型

如何在 C++ OpenCV 中编写表达式“img[markers == -1] = [255,0,0]”?

opencv_图像的色彩空間cvtColor(HSVHSLHSB )及相关色彩学

标量的OpenCV双矩阵除法产生不正确的结果

颜色rgb