How can I merge rectangles with small area (OpenCV, Python)












0















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!










share|improve this question























  • 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













  • 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
















0















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!










share|improve this question























  • 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













  • 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














0












0








0








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!










share|improve this question














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






share|improve this question













share|improve this question











share|improve this question




share|improve this question










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 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













  • 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











  • 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











  • 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












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
});


}
});














draft saved

draft discarded


















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
















draft saved

draft discarded




















































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.




draft saved


draft discarded














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





















































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







Popular posts from this blog

Xamarin.iOS Cant Deploy on Iphone

Glorious Revolution

Dulmage-Mendelsohn matrix decomposition in Python