gpt4 book ai didi

python - 带点线或虚线的 opencv 矩形

转载 作者:太空狗 更新时间:2023-10-29 20:40:43 33 4
gpt4 key购买 nike

我这里有一行代码使用 opencv 的 python 绑定(bind):

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

这会在厚度为 4 的图像 img 上绘制一个红色矩形。

但是有没有办法让矩形的线条风格化呢?不要太多。只是点缀或虚线,就是这样。

最佳答案

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()

关于python - 带点线或虚线的 opencv 矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26690932/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com