прямоугольник opencv с пунктирными или пунктирными линиями

У меня есть строка кода, которая использует привязку python для opencv:

cv2.rectangle(img, (box[1], box[0]), (box[3], box[2]), (255,0,0), 4) 

Это рисует красный прямоугольник на изображении img толщины 4 .

  • Простое распознавание знаков OCR в OpenCV-Python
  • запись надежного (определение цвета и размера) обнаружения круга с помощью opencv (на основе преобразования Hough или других функций)
  • Сравнение производительности интерфейсов OpenCV-Python, cv и cv2
  • Пиксельные соседи в массиве 2d (изображение) с использованием Python
  • Оценка области изображения, созданного набором точек (Альфа-фигуры?)
  • Но есть ли способ стилизовать линии прямоугольников? Не очень много. Просто пунктирная или пунктирная, вот и все.

  • Простое распознавание знаков OCR в OpenCV-Python
  • Сравнение производительности интерфейсов OpenCV-Python, cv и cv2
  • Косинус рисунок
  • Оценка области изображения, созданного набором точек (Альфа-фигуры?)
  • запись надежного (определение цвета и размера) обнаружения круга с помощью opencv (на основе преобразования Hough или других функций)
  • Пиксельные соседи в массиве 2d (изображение) с использованием Python
  • 3 Solutions collect form web for “прямоугольник opencv с пунктирными или пунктирными линиями”

     import cv2 import numpy as np def drawline(img,pt1,pt2,color,thickness=1,style='dotted',gap=20): dist =((pt1[0]-pt2[0])**2+(pt1[1]-pt2[1])**2)**.5 pts= [] for i in np.arange(0,dist,gap): r=i/dist x=int((pt1[0]*(1-r)+pt2[0]*r)+.5) y=int((pt1[1]*(1-r)+pt2[1]*r)+.5) p = (x,y) pts.append(p) if style=='dotted': for p in pts: cv2.circle(img,p,thickness,color,-1) else: s=pts[0] e=pts[0] i=0 for p in pts: s=e e=p if i%2==1: cv2.line(img,s,e,color,thickness) i+=1 def drawpoly(img,pts,color,thickness=1,style='dotted',): s=pts[0] e=pts[0] pts.append(pts.pop(0)) for p in pts: s=e e=p drawline(img,s,e,color,thickness,style) def drawrect(img,pt1,pt2,color,thickness=1,style='dotted'): pts = [pt1,(pt2[0],pt1[1]),pt2,(pt1[0],pt2[1])] drawpoly(img,pts,color,thickness,style) im = np.zeros((800,800,3),dtype='uint8') s=(234,222) e=(500,700) drawrect(im,s,e,(0,255,255),1,'dotted') cv2.imshow('im',im) cv2.waitKey() 

    OpenCV не поддерживает (в настоящее время) поддержку свойств линии за пределами толщины и сглаживания.

    • openCV – библиотека с открытым исходным кодом, поэтому вы можете найти исходный код для рисования и немного изменить его
    • вы можете использовать LineIterator и получить любой стиль, который вы хотите, в нескольких строках кода
    Python - лучший язык программирования в мире.