Как нарисовать короткую cv2.line в opencv-python?

#opencv

#opencv

Вопрос:

Если две точки для рисования линии — (100,100) и (200,200), есть ли способ нарисовать только среднюю точку?

Комментарии:

1. вам нужно отметить среднюю точку?

2. Нарисуйте радиус = 1 окружности в 150 150 или нарисуйте линию от 149 149 до 150 150.

3. C или Python ? Если вы выполните поиск «opencv set pixel C / python», вы получите множество ответов, предполагая, что вы имеете в виду, что просто хотите установить пиксель (150, 150).

4. Я хочу найти кратчайшую возможную точку. Я использую python. На изображении у меня есть (352, 92) (-2.5121140e 06, 4.8845758e 02) У него есть две точки, подобные этой.

Ответ №1:

Если я правильно понял вашу проблему, вам нужна только средняя точка, поэтому этот фрагмент должен решать вашу проблему

 import cv2

def midpoint(point1, point2):
    # values need to be rounded to an integer to avoid an error when calling cv2.circle() later
    midpoint_x = round((point2[0]   point1[0])/2)
    midpoint_y = round((point2[1]   point1[1])/2)
    midpoint = (midpoint_x, midpoint_y)
    return midpoint

img = cv2.imread('image.jpg')
    
point1 = (352, 92)
point2 = (-2.5121140e 06, 4.8845758e 02)
    
point3 = midpoint(point1, point2)

# starting with radius 10 to make the point initially more visible
img = cv2.circle(img, point3, radius=10, color=(255, 255, 255), thickness=-1)
cv2.imshow("Midpoint position", img)
cv2.waitKey()
cv2.destroyWindow("Midpoint position")