python


grid detection in opencv python


I have an image that has items inside a grid. One stage of the problem is to detect and build a mask of the full grid, which can be slightly rotated clock or anticlockwise. My current CV pipeline extracts (probabilistic) Hough lines from an image and then uses its contours to filter for a set of rectangles (call the actual and the detected sets R' and R respectively). However due to occlusions and lighting conditions the hough lines (and consequently all downstream contours and lines segments) are incomplete (R << R'). Schematically the problem i must solve is to infer the missing grid components (R'- R) given the detected grid cells.
One strategy I am considering is the following. Foreach detected rectangle contour r in R do:
1- using fitLine() find vertical and horizontal lines that pass through the center of r (see code and image below)
rect = cv2.minAreaRect(r)
box = cv2.boxPoints(rect)
box = np.int0(box)
cx = np.int0(rect[0][0])
cy = np.int0(rect[0][1])
w = np.int0(rect[1][0])
h = np.int0(rect[1][1])
cv2.drawContours(img,[box],0,255,1)
[vx,vy,x,y] = cv2.fitLine(box, cv2.DIST_L2,0,0.01,0.01)
lefty = int((-x*vy/vx) + y)
righty = int(((cols-x)*vy/vx)+y)
start = (cols-1,righty)
end = (0,lefty)
cv2.line(img,start,end,255,1)
# HORIZONTAL
nx,ny = 1,-vx/vy
mag = np.sqrt((1+ny**2))
vx,vy = nx/mag,ny/mag
# Now find two extreme points on the line to draw line
lefty = int((-x*vy/vx) + y)
righty = int(((cols-x)*vy/vx)+y)
start = (cols-1,righty)
end = (0,lefty)
cv2.putText(img,'start',(start[0]-60,start[1]),font,0.5,255,1)
cv2.putText(img,'end',end,font,0.5,255,1)
cv2.line(img,start,end,255,1)
2- create a mask of same size and rotation as the source rectangle and move along the line define in (1), drawing the same shape rectangle as the source if there is no previously detected contour in the same area
ie.
My questions are:
is there a more efficient and better way to solve this problem?
What is best way to move the mask along the line that is at an angle
(given by cv2.minAreaRect)?
thank you


Related Links

ipython using 2.6 version instead of 2.7
Django: How to override authenticate() method?
Execute python script with a variable from linux shell
Output loop result into a list
Pyinstaller will create an executable with --onefile, but not without it
PyMongo update multiple records with multiple data
How to automatically input ssh private key passphrase with pexpect
Extract only the portion of a string between two regex patterns
Filtering dictionary keys by a function of their associated values
webrtc without a browser
Simple python IF statement not working?
Python: aliased to python3
replacing certain expressions in file but only one time
why recompile python after lib devels installed?
Unable to scrape google news accurately
How to optimize factorization code in Python?

Categories

HOME
tensorflow
dotnetrdf
security
mql4
payment-gateway
tinyos
freepascal
textwatcher
ipython
jbehave
wxwidgets
json-ld
extract
travis-ci
apple-numbers
ext.net
file-io
docker-windows
flexbox
getorgchart
wicket
google-shopping
opera-mini
mule-studio
koa
richfaces
activepython
metadata-extractor
pentaho-report-designer
vertex-buffer
autofill
bxslider
graph-databases
preg-grep
receipt
large-data
precedence
shibboleth
openshift-enterprise
redhat-datavirt
inkscape
zero
socketpair
poco-libraries
image-compression
wcf-security
socketscan
tuleap
rhel6
iron.io
galleriffic
update-site
mongoose-populate
gherkin
com-interop
spatial-query
web-essentials
throughput
java.util.calendar
datasnap
android-snackbar
js-cookie
pyrocms
wif
on-duplicate-key
divide-by-zero
xaml-designer
scala-2.11
java-collections-api
sid
mimosa
pyjade
real-time-updates
html-form-post
windows-update
lame
dropdownlistfor
blockingqueue
driving-directions
symbol-server
svn-hooks
delegatecommand





Mobile Apps Dev
Database Users
javascript
java
csharp
php
android
MS Developer
developer works
python
ios
c
html
jquery
RDBMS discuss
Cloud Virtualization
Database Dev&Adm