python - 如何在cv2中在黑色背景上绘制红色形状?
问题描述
我有一个黑色背景的图像。我应该如何在上面画一个红色的形状?红色应该是 (0,0,255) 对吧?但它显示为黑色,因此在黑色背景下不可见。我能做的最好的就是在下面的例子中创建一个白色矩形。我的问题是我应该如何使它变红?我想我在这里遗漏了一些简单的东西。请帮忙。
import cv2
import numpy as np
img = np.zeros((500,500,1), np.uint16)
cv2.rectangle(img, (200, 200), (300, 300), (0, 0, 255), 5)
cv2.imshow('image',img)
cv2.waitKey(100000)
你会看到矩形甚至没有出现:
我能做的最好的就是像这样的白色矩形:
img = np.zeros((500,500,1), np.uint16)
cv2.rectangle(img, (200, 200), (300, 300), (2**16, 0, 0), 5)
cv2.imshow('image',img)
cv2.waitKey(100000)
解决方案
您正在尝试在黑色(一个通道)图像上绘制颜色(3 个通道)。您需要将黑色图像转换为 3 个通道。这是我在 Python/OpenCV 中的做法
import cv2
import numpy as np
# create one channel black image (grayscale)
img = np.zeros((500,500))
# convert to 3 channel black (color)
img = cv2.merge([img,img,img])
# draw on it in color
cv2.rectangle(img, (200, 200), (300, 300), (0, 0, 255), 5)
cv2.imshow('image',img)
cv2.waitKey(0)
结果是黑色背景上的红色方形轮廓
推荐阅读
- html - 如何使用 vuetify 对齐列表项(1.5)
- cherrypy - CherryPy 是否在其服务器中很好地支持启用长轮询的路径?
- c++ - 如何将 Android 的外部音频库集成到 Qt 中?朱思?超能力?
- r - 将 x 标签格式化为 %d/%m
- database - 有没有办法根据条件添加到表中?
- eiffel - 如何在 Eiffel 中运行游标树?
- c# - 在某个时间点写入 .txt 文件
- python - OpenCV (Python) 将图像转换为 cv2.VideoCapture 对象
- python - Python:正确使用三引号
- java - 连接数据库的休眠问题 - java.lang.NoClassDefFoundError: net/bytebuddy/NamingStrategy$SuffixingRandom$BaseNameResolver