Python 带虚线或虚线的opencv矩形
我这里有一行代码使用opencv的python绑定:Python 带虚线或虚线的opencv矩形,python,opencv,computer-vision,draw,drawrectangle,Python,Opencv,Computer Vision,Draw,Drawrectangle,我这里有一行代码使用opencv的python绑定: cv2.rectangle(img, (box[1], box[0]), (box[3], box[2]), (255,0,0), 4) 这将在厚度为4的图像img上绘制一个红色矩形 但是有没有一种方法可以将矩形的线条风格化呢?不太多。只是虚线,或虚线,真的就是这样 OpenCV(目前)不支持厚度和抗锯齿以外的线条属性。 openCV是一个开源库,所以您可以找到绘图的源代码并对其进行轻微修改 您可以在几行代码中使用并获得您想要的任何样式 v
cv2.rectangle(img, (box[1], box[0]), (box[3], box[2]), (255,0,0), 4)
这将在厚度为4
的图像img
上绘制一个红色矩形
但是有没有一种方法可以将矩形的线条风格化呢?不太多。只是虚线,或虚线,真的就是这样 OpenCV(目前)不支持厚度和抗锯齿以外的线条属性。- openCV是一个开源库,所以您可以找到绘图的源代码并对其进行轻微修改
- 您可以在几行代码中使用并获得您想要的任何样式
void lineDot(OutputArray img, const Point& pt1, const Point& pt2, const Scalar& color, const vector<bool>& pattern){ LineIterator it(img.getMat(), pt1, pt2, LINE_8); // LINE_AA is not supported here for(auto i=0; i<it.count; i++, it++){ if(pattern[i%pattern.size()]){ // use any pattern of any length, dotted is {0,0,1}, dashed is {0,0,0,1,1,1} etc (*it)[0] = color.val[0]; (*it)[1] = color.val[1]; (*it)[2] = color.val[2]; } } }
void lineDot(输出阵列img、常量点和pt1、常量点和pt2、常量标量和颜色、常量向量和图案){ LineIterator it(img.getMat(),pt1,pt2,LINE_8);//这里不支持LINE_AA
对于(自动i=0;i请尝试以下操作:cv::Point P1, P2; P1.y = 50; P2.y = 50; int dot_gap = 50; int dot_width = 50; for( int i=0 ; i < in_img.cols; (i = i+d_width) ) { P1.x = i; P2.x = i + dot_width; cv::line(in_img, P1, P2, cv::Scalar(0, 255, 255), 2, cv::LINE_8); }
cv::点P1、P2; P1.y=50; P2.y=50; int dot_间隙=50; int dot_width=50; 对于(int i=0;i
cv::Point P1, P2; P1.y = 50; P2.y = 50; int dot_gap = 50; int dot_width = 50; for( int i=0 ; i < in_img.cols; (i = i+d_width) ) { P1.x = i; P2.x = i + dot_width; cv::line(in_img, P1, P2, cv::Scalar(0, 255, 255), 2, cv::LINE_8); }