标量(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中没有给出绿色线的主要内容,如果未能解决你的问题,请参考以下文章
如何在 C++ OpenCV 中编写表达式“img[markers == -1] = [255,0,0]”?