How can I merge rectangles with small area (OpenCV, Python)
I'm using OpenCV in order to detect rectangles in my image so I can crop them later: (rectangles contains products).
The first thing I have done was detecting Vertical and Horizontal lines, combine them to get this picture : Image_With_Small_rectangles
As you can see on the left side of my image, I have got some indesirable vertical/horizontal lines, that create small rectangles.
As I'm new to OpenCV, I want to know if it's possible to merge rectangle with a small area! (if area > min_area) merge_rectangle
So I can get an image clean like this one : Clean_Image
Many thanks in advance!
python opencv image-processing merge rectangles
add a comment |
I'm using OpenCV in order to detect rectangles in my image so I can crop them later: (rectangles contains products).
The first thing I have done was detecting Vertical and Horizontal lines, combine them to get this picture : Image_With_Small_rectangles
As you can see on the left side of my image, I have got some indesirable vertical/horizontal lines, that create small rectangles.
As I'm new to OpenCV, I want to know if it's possible to merge rectangle with a small area! (if area > min_area) merge_rectangle
So I can get an image clean like this one : Clean_Image
Many thanks in advance!
python opencv image-processing merge rectangles
Can you post the code of what you tried? If you used Houghlines, you might want play around withminLineLength
andmaxLineGap
– Rick M.
Nov 16 '18 at 10:26
OCV'scv::Rect
has thearea()
method which returns the area of the rectangle. As for the rest, you ll have to determine which rects are next to each other and how to merge them, yourself (not really hard)
– Croolman
Nov 16 '18 at 10:37
I have an idea. Since the indesirable lines always has an end that has only one black pixel neighbor, we can detect these end points. Then we detect the point where a horizontal line and a vertical line meet, to have the position of the other end of the line. Then eliminate the pixels in between.
– Kaiwen Chang
Nov 16 '18 at 16:19
Nice idea! I'll be working on it.
– Capito
Nov 21 '18 at 7:58
add a comment |
I'm using OpenCV in order to detect rectangles in my image so I can crop them later: (rectangles contains products).
The first thing I have done was detecting Vertical and Horizontal lines, combine them to get this picture : Image_With_Small_rectangles
As you can see on the left side of my image, I have got some indesirable vertical/horizontal lines, that create small rectangles.
As I'm new to OpenCV, I want to know if it's possible to merge rectangle with a small area! (if area > min_area) merge_rectangle
So I can get an image clean like this one : Clean_Image
Many thanks in advance!
python opencv image-processing merge rectangles
I'm using OpenCV in order to detect rectangles in my image so I can crop them later: (rectangles contains products).
The first thing I have done was detecting Vertical and Horizontal lines, combine them to get this picture : Image_With_Small_rectangles
As you can see on the left side of my image, I have got some indesirable vertical/horizontal lines, that create small rectangles.
As I'm new to OpenCV, I want to know if it's possible to merge rectangle with a small area! (if area > min_area) merge_rectangle
So I can get an image clean like this one : Clean_Image
Many thanks in advance!
python opencv image-processing merge rectangles
python opencv image-processing merge rectangles
asked Nov 16 '18 at 10:14
CapitoCapito
53
53
Can you post the code of what you tried? If you used Houghlines, you might want play around withminLineLength
andmaxLineGap
– Rick M.
Nov 16 '18 at 10:26
OCV'scv::Rect
has thearea()
method which returns the area of the rectangle. As for the rest, you ll have to determine which rects are next to each other and how to merge them, yourself (not really hard)
– Croolman
Nov 16 '18 at 10:37
I have an idea. Since the indesirable lines always has an end that has only one black pixel neighbor, we can detect these end points. Then we detect the point where a horizontal line and a vertical line meet, to have the position of the other end of the line. Then eliminate the pixels in between.
– Kaiwen Chang
Nov 16 '18 at 16:19
Nice idea! I'll be working on it.
– Capito
Nov 21 '18 at 7:58
add a comment |
Can you post the code of what you tried? If you used Houghlines, you might want play around withminLineLength
andmaxLineGap
– Rick M.
Nov 16 '18 at 10:26
OCV'scv::Rect
has thearea()
method which returns the area of the rectangle. As for the rest, you ll have to determine which rects are next to each other and how to merge them, yourself (not really hard)
– Croolman
Nov 16 '18 at 10:37
I have an idea. Since the indesirable lines always has an end that has only one black pixel neighbor, we can detect these end points. Then we detect the point where a horizontal line and a vertical line meet, to have the position of the other end of the line. Then eliminate the pixels in between.
– Kaiwen Chang
Nov 16 '18 at 16:19
Nice idea! I'll be working on it.
– Capito
Nov 21 '18 at 7:58
Can you post the code of what you tried? If you used Houghlines, you might want play around with
minLineLength
and maxLineGap
– Rick M.
Nov 16 '18 at 10:26
Can you post the code of what you tried? If you used Houghlines, you might want play around with
minLineLength
and maxLineGap
– Rick M.
Nov 16 '18 at 10:26
OCV's
cv::Rect
has the area()
method which returns the area of the rectangle. As for the rest, you ll have to determine which rects are next to each other and how to merge them, yourself (not really hard)– Croolman
Nov 16 '18 at 10:37
OCV's
cv::Rect
has the area()
method which returns the area of the rectangle. As for the rest, you ll have to determine which rects are next to each other and how to merge them, yourself (not really hard)– Croolman
Nov 16 '18 at 10:37
I have an idea. Since the indesirable lines always has an end that has only one black pixel neighbor, we can detect these end points. Then we detect the point where a horizontal line and a vertical line meet, to have the position of the other end of the line. Then eliminate the pixels in between.
– Kaiwen Chang
Nov 16 '18 at 16:19
I have an idea. Since the indesirable lines always has an end that has only one black pixel neighbor, we can detect these end points. Then we detect the point where a horizontal line and a vertical line meet, to have the position of the other end of the line. Then eliminate the pixels in between.
– Kaiwen Chang
Nov 16 '18 at 16:19
Nice idea! I'll be working on it.
– Capito
Nov 21 '18 at 7:58
Nice idea! I'll be working on it.
– Capito
Nov 21 '18 at 7:58
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53335675%2fhow-can-i-merge-rectangles-with-small-area-opencv-python%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53335675%2fhow-can-i-merge-rectangles-with-small-area-opencv-python%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Can you post the code of what you tried? If you used Houghlines, you might want play around with
minLineLength
andmaxLineGap
– Rick M.
Nov 16 '18 at 10:26
OCV's
cv::Rect
has thearea()
method which returns the area of the rectangle. As for the rest, you ll have to determine which rects are next to each other and how to merge them, yourself (not really hard)– Croolman
Nov 16 '18 at 10:37
I have an idea. Since the indesirable lines always has an end that has only one black pixel neighbor, we can detect these end points. Then we detect the point where a horizontal line and a vertical line meet, to have the position of the other end of the line. Then eliminate the pixels in between.
– Kaiwen Chang
Nov 16 '18 at 16:19
Nice idea! I'll be working on it.
– Capito
Nov 21 '18 at 7:58