So this source code is applied by this "LineIterator".
..
Mat DrawDashLine(Mat inMat, Point start, Point end, int gap, Scalar color) { Mat rMat; rMat = inMat.clone(); cv::LineIterator it(rMat, start, end, 8); vector< pair<cv::Point, cv::Point> > vecPt_pair; vector< cv::Point > vecPt; Point A, B; A = start; for (int i = 0, j = 0; i < it.count; i++, it++) { if (i % gap == 0) { //update end point B = it.pos(); if(j%2) line(rMat, A, B, color, 2); //update start point A = B; j++; } } return rMat; } int main() { Mat img(500, 500, CV_8UC3); img.setTo(0); Mat rImg = DrawDashLine(img, Point(20, 20), Point(300, 300), 10, CV_RGB(255, 0, 0)); namedWindow("test", 0); cv::imshow("test", rImg); waitKey(0); return 0; }..
No comments:
Post a Comment