【问题标题】:How to Draw a point in an image using given co-ordinate with python opencv?python - 如何使用给定的坐标与python opencv在图像中绘制一个点?
【发布时间】:2018-09-22 18:06:39
【问题描述】:

我有一个图像和一个坐标(X,Y)。如何在图像上用这个坐标画一个点。我想使用 Python OpenCV。

【问题讨论】:

  • 可能想从做一些研究开始——比如阅读涵盖所有这些的tutorials in OpenCV documentation。 |不太理解人们对此表示赞同——对我来说,这是一个明显的“没有表现出任何研究努力”的案例。
  • @DanMašek 我明白你的意思,但公平地说,我不认为 OpenCV 教程展示了如何在 Python 中从头开始创建图像——即使是最初的几个最基本的只显示如何加载梅西的图像,然后启动到numpy,几乎没有任何解释没有numpy,或者如果你不想编辑梅西先生,你如何创建一个空图像。 .
  • Python 和 OpenCV 需要为此安装很多软件...我猜你最终打算做一些更复杂的事情?
  • @MarkSetchell 是的,我想有差距。 numpy Quickstart tutorial 是另一回事,恕我直言。您无法真正绕过numpy,因为numpy.array 在Python 绑定中用于表示cv::Mat(例如图像)。
  • @DanMašek 感谢您提供的链接 - 我一直使用 OpenCV 的 C++ 绑定,并且我发现 NumPy + Python 的做事方式对自己来说是一个挑战,因为我都不知道。

标签: python-3.x image opencv


【解决方案1】:

可以使用 cv2.circle() 函数 opencv 模块:

image = cv.circle(image, centerOfCircle, radius, color, thickness)

半径为 0 用于绘制单个点,厚度为负数用于实心圆

import cv2
image = cv2.circle(image, (x,y), radius=0, color=(0, 0, 255), thickness=-1)

【讨论】:

  • 简单有效。
  • 圆形功能允许您绘制任意大小的点。如果你只希望你的点是单个像素的大小,使用Mark Setchell's answer 会更高效
【解决方案2】:

我也在学习 Python 与 OpenCV 的绑定。这是一种方法:

#!/usr/local/bin/python3
import cv2
import numpy as np

w=40
h=20
# Make empty black image
image=np.zeros((h,w,3),np.uint8)

# Fill left half with yellow
image[:,0:int(w/2)]=(0,255,255)

# Fill right half with blue
image[:,int(w/2):w]=(255,0,0)

# Create a named colour
red = [0,0,255]

# Change one pixel
image[10,5]=red

# Save
cv2.imwrite("result.png",image)

这是结果 - 放大后可以看到。


这是一个非常简洁但不那么有趣的答案:

#!/usr/local/bin/python3
import cv2
import numpy as np

# Make empty black image
image=np.zeros((20,40,3),np.uint8)

# Make one pixel red
image[10,5]=[0,0,255]

# Save
cv2.imwrite("result.png",image)

【讨论】:

  • 如果只需要绘制一个像素大小的点,这是最有效的。如果您希望您的观点更大,请使用Dhanashree Desai's answer
  • 另外,如果使用这种方式,需要先用y值指定坐标,再用x值指定坐标。这是因为在 numpy 中,第一个轴代表行,第二个轴代表列。
  • @LelandHepworth 如果你想让你的观点更大,使用我的技术仍然更有效,只需做im[10:14, 5:9] = [0,0,255]
  • @LelandHepworth 另外,我故意在[10,5] 指出这一点,所以很明显,它比对面更远,以准确说明行排在第一位的这一点?
  • 优点。这将形成一个更大的正方形,并且仍然非常有效
猜你喜欢
  • 2019-08-27
  • 2020-12-05
  • 2021-06-21
  • 1970-01-01
  • 2021-03-07
  • 2020-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多