View Source Evision.LineSegmentDetector (Evision v0.2.9)
Summary
Functions
Clears the algorithm state
Draws two groups of lines in blue and red, counting the non overlapping (mismatching) pixels.
Draws two groups of lines in blue and red, counting the non overlapping (mismatching) pixels.
Finds lines in the input image.
Finds lines in the input image.
Draws the line segments on a given image.
Returns true if the Algorithm is empty (e.g. in the very beginning or after unsuccessful read
getDefaultName
Reads algorithm parameters from a file storage
save
Stores algorithm parameters in a file storage
write
Types
@type t() :: %Evision.LineSegmentDetector{ref: reference()}
Type that represents an LineSegmentDetector
struct.
ref.
reference()
The underlying erlang resource variable.
Functions
@spec clear(Keyword.t()) :: any() | {:error, String.t()}
@spec clear(t()) :: t() | {:error, String.t()}
Clears the algorithm state
Positional Arguments
- self:
Evision.LineSegmentDetector.t()
Python prototype (for reference only):
clear() -> None
@spec compareSegments( t(), {number(), number()}, Evision.Mat.maybe_mat_in(), Evision.Mat.maybe_mat_in() ) :: {integer(), Evision.Mat.t()} | {:error, String.t()}
Draws two groups of lines in blue and red, counting the non overlapping (mismatching) pixels.
Positional Arguments
self:
Evision.LineSegmentDetector.t()
size:
Size
.The size of the image, where lines1 and lines2 were found.
lines1:
Evision.Mat
.The first group of lines that needs to be drawn. It is visualized in blue color.
lines2:
Evision.Mat
.The second group of lines. They visualized in red color.
Return
retval:
integer()
image:
Evision.Mat.t()
.Optional image, where the lines will be drawn. The image should be color(3-channel) in order for lines1 and lines2 to be drawn in the above mentioned colors.
Python prototype (for reference only):
compareSegments(size, lines1, lines2[, image]) -> retval, image
@spec compareSegments( t(), {number(), number()}, Evision.Mat.maybe_mat_in(), Evision.Mat.maybe_mat_in(), [{atom(), term()}, ...] | nil ) :: {integer(), Evision.Mat.t()} | {:error, String.t()}
Draws two groups of lines in blue and red, counting the non overlapping (mismatching) pixels.
Positional Arguments
self:
Evision.LineSegmentDetector.t()
size:
Size
.The size of the image, where lines1 and lines2 were found.
lines1:
Evision.Mat
.The first group of lines that needs to be drawn. It is visualized in blue color.
lines2:
Evision.Mat
.The second group of lines. They visualized in red color.
Return
retval:
integer()
image:
Evision.Mat.t()
.Optional image, where the lines will be drawn. The image should be color(3-channel) in order for lines1 and lines2 to be drawn in the above mentioned colors.
Python prototype (for reference only):
compareSegments(size, lines1, lines2[, image]) -> retval, image
@spec detect(t(), Evision.Mat.maybe_mat_in()) :: {Evision.Mat.t(), Evision.Mat.t(), Evision.Mat.t(), Evision.Mat.t()} | {:error, String.t()}
Finds lines in the input image.
Positional Arguments
self:
Evision.LineSegmentDetector.t()
image:
Evision.Mat
.A grayscale (CV_8UC1) input image. If only a roi needs to be selected, use:
lsd_ptr-\>detect(image(roi), lines, ...); lines += Scalar(roi.x, roi.y, roi.x, roi.y);
Return
lines:
Evision.Mat.t()
.A vector of Vec4f elements specifying the beginning and ending point of a line. Where Vec4f is (x1, y1, x2, y2), point 1 is the start, point 2 - end. Returned lines are strictly oriented depending on the gradient.
width:
Evision.Mat.t()
.Vector of widths of the regions, where the lines are found. E.g. Width of line.
prec:
Evision.Mat.t()
.Vector of precisions with which the lines are found.
nfa:
Evision.Mat.t()
.Vector containing number of false alarms in the line region, with precision of 10%. The bigger the value, logarithmically better the detection.
- -1 corresponds to 10 mean false alarms
- 0 corresponds to 1 mean false alarm
- 1 corresponds to 0.1 mean false alarms This vector will be calculated only when the objects type is #LSD_REFINE_ADV.
This is the output of the default parameters of the algorithm on the above shown image.
Python prototype (for reference only):
detect(image[, lines[, width[, prec[, nfa]]]]) -> lines, width, prec, nfa
@spec detect(t(), Evision.Mat.maybe_mat_in(), [{atom(), term()}, ...] | nil) :: {Evision.Mat.t(), Evision.Mat.t(), Evision.Mat.t(), Evision.Mat.t()} | {:error, String.t()}
Finds lines in the input image.
Positional Arguments
self:
Evision.LineSegmentDetector.t()
image:
Evision.Mat
.A grayscale (CV_8UC1) input image. If only a roi needs to be selected, use:
lsd_ptr-\>detect(image(roi), lines, ...); lines += Scalar(roi.x, roi.y, roi.x, roi.y);
Return
lines:
Evision.Mat.t()
.A vector of Vec4f elements specifying the beginning and ending point of a line. Where Vec4f is (x1, y1, x2, y2), point 1 is the start, point 2 - end. Returned lines are strictly oriented depending on the gradient.
width:
Evision.Mat.t()
.Vector of widths of the regions, where the lines are found. E.g. Width of line.
prec:
Evision.Mat.t()
.Vector of precisions with which the lines are found.
nfa:
Evision.Mat.t()
.Vector containing number of false alarms in the line region, with precision of 10%. The bigger the value, logarithmically better the detection.
- -1 corresponds to 10 mean false alarms
- 0 corresponds to 1 mean false alarm
- 1 corresponds to 0.1 mean false alarms This vector will be calculated only when the objects type is #LSD_REFINE_ADV.
This is the output of the default parameters of the algorithm on the above shown image.
Python prototype (for reference only):
detect(image[, lines[, width[, prec[, nfa]]]]) -> lines, width, prec, nfa
@spec drawSegments(t(), Evision.Mat.maybe_mat_in(), Evision.Mat.maybe_mat_in()) :: Evision.Mat.t() | {:error, String.t()}
Draws the line segments on a given image.
Positional Arguments
self:
Evision.LineSegmentDetector.t()
lines:
Evision.Mat
.A vector of the lines that needed to be drawn.
Return
image:
Evision.Mat.t()
.The image, where the lines will be drawn. Should be bigger or equal to the image, where the lines were found.
Python prototype (for reference only):
drawSegments(image, lines) -> image
@spec empty(Keyword.t()) :: any() | {:error, String.t()}
@spec empty(t()) :: boolean() | {:error, String.t()}
Returns true if the Algorithm is empty (e.g. in the very beginning or after unsuccessful read
Positional Arguments
- self:
Evision.LineSegmentDetector.t()
Return
- retval:
bool
Python prototype (for reference only):
empty() -> retval
@spec getDefaultName(Keyword.t()) :: any() | {:error, String.t()}
@spec getDefaultName(t()) :: binary() | {:error, String.t()}
getDefaultName
Positional Arguments
- self:
Evision.LineSegmentDetector.t()
Return
- retval:
String
Returns the algorithm string identifier. This string is used as top level xml/yml node tag when the object is saved to a file or string.
Python prototype (for reference only):
getDefaultName() -> retval
@spec read(t(), Evision.FileNode.t()) :: t() | {:error, String.t()}
Reads algorithm parameters from a file storage
Positional Arguments
- self:
Evision.LineSegmentDetector.t()
- func:
Evision.FileNode
Python prototype (for reference only):
read(fn) -> None
save
Positional Arguments
- self:
Evision.LineSegmentDetector.t()
- filename:
String
Saves the algorithm to a file. In order to make this method work, the derived class must implement Algorithm::write(FileStorage& fs).
Python prototype (for reference only):
save(filename) -> None
@spec write(t(), Evision.FileStorage.t()) :: t() | {:error, String.t()}
Stores algorithm parameters in a file storage
Positional Arguments
- self:
Evision.LineSegmentDetector.t()
- fs:
Evision.FileStorage
Python prototype (for reference only):
write(fs) -> None
@spec write(t(), Evision.FileStorage.t(), binary()) :: t() | {:error, String.t()}
write
Positional Arguments
- self:
Evision.LineSegmentDetector.t()
- fs:
Evision.FileStorage
- name:
String
Has overloading in C++
Python prototype (for reference only):
write(fs, name) -> None