OpenCv with python and am trying to automatic mask a rectangle for multiple spots
I am working on this image with OpenCV and I have gotten as far as pulling in the photo, grayscale, blur and create houghlines. I am trying to now mask each spot and create an ID for each. So I can create a file with Boolean logic of something is there or not. In my reading I found where you can use a mouse to draw on the image but I am looking for more of an automatic approach. Can someone help me get there.
import cv2
import numpy as np
import matplotlib
from matplotlib.pyplot import imshow
from matplotlib import pyplot as plt
#Get image to gray scale and process in GaussianBlur
img = cv2.imread('IMG_0940.png')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
kernel_size = 5
blur_gray = cv2.GaussianBlur(gray,(kernel_size, kernel_size),0) #gray
#Process the edges of parking spots with Canny
low_threshold = 50
high_threshold = 150
edges = cv2.Canny(blur_gray, low_threshold, high_threshold)
#To get the lines of the parking spots use HoughLinesP
rho = 1 # distance resolution in pixels of the Hough grid
theta = np.pi / 180 # angular resolution in radians of the Hough grid
threshold = 15 # minimum number of votes (intersections in Hough grid cell)
min_line_length = 50 # minimum number of pixels making up a line
max_line_gap = 20 # maximum gap in pixels between connectable line segments
line_image = np.copy(img) * 0 # creating a blank to draw lines on
# Run Hough on edge detected image
# Output "lines" is an array containing endpoints of detected line segments
lines = cv2.HoughLinesP(edges, rho, theta, threshold, np.array(),
min_line_length, max_line_gap)
for line in lines:
for x1,y1,x2,y2 in line:
cv2.line(line_image,(x1,y1),(x2,y2),(255,0,0),5)
#Draw the lines on the srcImage
lines_edges = cv2.addWeighted(img, 0.8, line_image, 1, 0)
cv2.imwrite('IMG_0940_LINES.png',lines_edges)
result = cv2.imread('IMG_0940_LINES.png')
cv2.namedWindow('Result',cv2.WINDOW_AUTOSIZE)
cv2.imshow('Result',result)
cv2.resizeWindow('Result',1000,1200)
cv2.waitKey(0)
cv2.destroyAllWindows() #Closes all the windows
numbers mask id
add a comment |
I am working on this image with OpenCV and I have gotten as far as pulling in the photo, grayscale, blur and create houghlines. I am trying to now mask each spot and create an ID for each. So I can create a file with Boolean logic of something is there or not. In my reading I found where you can use a mouse to draw on the image but I am looking for more of an automatic approach. Can someone help me get there.
import cv2
import numpy as np
import matplotlib
from matplotlib.pyplot import imshow
from matplotlib import pyplot as plt
#Get image to gray scale and process in GaussianBlur
img = cv2.imread('IMG_0940.png')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
kernel_size = 5
blur_gray = cv2.GaussianBlur(gray,(kernel_size, kernel_size),0) #gray
#Process the edges of parking spots with Canny
low_threshold = 50
high_threshold = 150
edges = cv2.Canny(blur_gray, low_threshold, high_threshold)
#To get the lines of the parking spots use HoughLinesP
rho = 1 # distance resolution in pixels of the Hough grid
theta = np.pi / 180 # angular resolution in radians of the Hough grid
threshold = 15 # minimum number of votes (intersections in Hough grid cell)
min_line_length = 50 # minimum number of pixels making up a line
max_line_gap = 20 # maximum gap in pixels between connectable line segments
line_image = np.copy(img) * 0 # creating a blank to draw lines on
# Run Hough on edge detected image
# Output "lines" is an array containing endpoints of detected line segments
lines = cv2.HoughLinesP(edges, rho, theta, threshold, np.array(),
min_line_length, max_line_gap)
for line in lines:
for x1,y1,x2,y2 in line:
cv2.line(line_image,(x1,y1),(x2,y2),(255,0,0),5)
#Draw the lines on the srcImage
lines_edges = cv2.addWeighted(img, 0.8, line_image, 1, 0)
cv2.imwrite('IMG_0940_LINES.png',lines_edges)
result = cv2.imread('IMG_0940_LINES.png')
cv2.namedWindow('Result',cv2.WINDOW_AUTOSIZE)
cv2.imshow('Result',result)
cv2.resizeWindow('Result',1000,1200)
cv2.waitKey(0)
cv2.destroyAllWindows() #Closes all the windows
numbers mask id
add a comment |
I am working on this image with OpenCV and I have gotten as far as pulling in the photo, grayscale, blur and create houghlines. I am trying to now mask each spot and create an ID for each. So I can create a file with Boolean logic of something is there or not. In my reading I found where you can use a mouse to draw on the image but I am looking for more of an automatic approach. Can someone help me get there.
import cv2
import numpy as np
import matplotlib
from matplotlib.pyplot import imshow
from matplotlib import pyplot as plt
#Get image to gray scale and process in GaussianBlur
img = cv2.imread('IMG_0940.png')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
kernel_size = 5
blur_gray = cv2.GaussianBlur(gray,(kernel_size, kernel_size),0) #gray
#Process the edges of parking spots with Canny
low_threshold = 50
high_threshold = 150
edges = cv2.Canny(blur_gray, low_threshold, high_threshold)
#To get the lines of the parking spots use HoughLinesP
rho = 1 # distance resolution in pixels of the Hough grid
theta = np.pi / 180 # angular resolution in radians of the Hough grid
threshold = 15 # minimum number of votes (intersections in Hough grid cell)
min_line_length = 50 # minimum number of pixels making up a line
max_line_gap = 20 # maximum gap in pixels between connectable line segments
line_image = np.copy(img) * 0 # creating a blank to draw lines on
# Run Hough on edge detected image
# Output "lines" is an array containing endpoints of detected line segments
lines = cv2.HoughLinesP(edges, rho, theta, threshold, np.array(),
min_line_length, max_line_gap)
for line in lines:
for x1,y1,x2,y2 in line:
cv2.line(line_image,(x1,y1),(x2,y2),(255,0,0),5)
#Draw the lines on the srcImage
lines_edges = cv2.addWeighted(img, 0.8, line_image, 1, 0)
cv2.imwrite('IMG_0940_LINES.png',lines_edges)
result = cv2.imread('IMG_0940_LINES.png')
cv2.namedWindow('Result',cv2.WINDOW_AUTOSIZE)
cv2.imshow('Result',result)
cv2.resizeWindow('Result',1000,1200)
cv2.waitKey(0)
cv2.destroyAllWindows() #Closes all the windows
numbers mask id
I am working on this image with OpenCV and I have gotten as far as pulling in the photo, grayscale, blur and create houghlines. I am trying to now mask each spot and create an ID for each. So I can create a file with Boolean logic of something is there or not. In my reading I found where you can use a mouse to draw on the image but I am looking for more of an automatic approach. Can someone help me get there.
import cv2
import numpy as np
import matplotlib
from matplotlib.pyplot import imshow
from matplotlib import pyplot as plt
#Get image to gray scale and process in GaussianBlur
img = cv2.imread('IMG_0940.png')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
kernel_size = 5
blur_gray = cv2.GaussianBlur(gray,(kernel_size, kernel_size),0) #gray
#Process the edges of parking spots with Canny
low_threshold = 50
high_threshold = 150
edges = cv2.Canny(blur_gray, low_threshold, high_threshold)
#To get the lines of the parking spots use HoughLinesP
rho = 1 # distance resolution in pixels of the Hough grid
theta = np.pi / 180 # angular resolution in radians of the Hough grid
threshold = 15 # minimum number of votes (intersections in Hough grid cell)
min_line_length = 50 # minimum number of pixels making up a line
max_line_gap = 20 # maximum gap in pixels between connectable line segments
line_image = np.copy(img) * 0 # creating a blank to draw lines on
# Run Hough on edge detected image
# Output "lines" is an array containing endpoints of detected line segments
lines = cv2.HoughLinesP(edges, rho, theta, threshold, np.array(),
min_line_length, max_line_gap)
for line in lines:
for x1,y1,x2,y2 in line:
cv2.line(line_image,(x1,y1),(x2,y2),(255,0,0),5)
#Draw the lines on the srcImage
lines_edges = cv2.addWeighted(img, 0.8, line_image, 1, 0)
cv2.imwrite('IMG_0940_LINES.png',lines_edges)
result = cv2.imread('IMG_0940_LINES.png')
cv2.namedWindow('Result',cv2.WINDOW_AUTOSIZE)
cv2.imshow('Result',result)
cv2.resizeWindow('Result',1000,1200)
cv2.waitKey(0)
cv2.destroyAllWindows() #Closes all the windows
numbers mask id
numbers mask id
asked Nov 13 '18 at 19:46
Brooks NelsonBrooks Nelson
113
113
add a comment |
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%2f53288446%2fopencv-with-python-and-am-trying-to-automatic-mask-a-rectangle-for-multiple-spot%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%2f53288446%2fopencv-with-python-and-am-trying-to-automatic-mask-a-rectangle-for-multiple-spot%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