Merge pull request #1697 from dianlujitao:3.4
commit
8292bb224c
3 changed files with 83 additions and 26 deletions
@ -0,0 +1,17 @@ |
||||
#include "opencv2/line_descriptor.hpp" |
||||
|
||||
template<> struct pyopencvVecConverter<line_descriptor::KeyLine> |
||||
{ |
||||
static bool to(PyObject* obj, std::vector<line_descriptor::KeyLine>& value, const ArgInfo info) |
||||
{ |
||||
return pyopencv_to_generic_vec(obj, value, info); |
||||
} |
||||
|
||||
static PyObject* from(const std::vector<line_descriptor::KeyLine>& value) |
||||
{ |
||||
return pyopencv_from_generic_vec(value); |
||||
} |
||||
}; |
||||
|
||||
typedef std::vector<line_descriptor::KeyLine> vector_KeyLine; |
||||
typedef std::vector<std::vector<line_descriptor::KeyLine> > vector_vector_KeyLine; |
@ -0,0 +1,40 @@ |
||||
#!/usr/bin/env python |
||||
|
||||
''' |
||||
This example shows the functionalities of lines extraction finished by LSDDetector class. |
||||
|
||||
USAGE: lsd_lines_extraction.py [<path_to_input_image>] |
||||
''' |
||||
|
||||
import sys |
||||
import cv2 as cv |
||||
|
||||
if __name__ == '__main__': |
||||
print(__doc__) |
||||
|
||||
if len(sys.argv) > 1: |
||||
fname = sys.argv[1] |
||||
else : |
||||
fname = '../data/corridor.jpg' |
||||
|
||||
img = cv.imread(fname) |
||||
|
||||
if img is None: |
||||
print('Failed to load image file:', fname) |
||||
sys.exit(1) |
||||
|
||||
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY) |
||||
|
||||
lsd = cv.line_descriptor_LSDDetector.createLSDDetector() |
||||
|
||||
lines = lsd.detect(gray, 2, 1) |
||||
for kl in lines: |
||||
if kl.octave == 0: |
||||
# cv.line only accepts integer coordinate |
||||
pt1 = (int(kl.startPointX), int(kl.startPointY)) |
||||
pt2 = (int(kl.endPointX), int(kl.endPointY)) |
||||
cv.line(img, pt1, pt2, [255, 0, 0], 2) |
||||
|
||||
cv.imshow('output', img) |
||||
cv.waitKey(0) |
||||
cv.destroyAllWindows() |
Loading…
Reference in new issue