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

How to make python decorators work like a tag to make function calls “by tag”
Pandas - Remove index column
Setting SublimeRepl to work inside venv (sublime 3)
python-docx get info from dropdownlist (in table)
Creating audio file with gTTS for Google Speech API [duplicate]
Python: Make raw input remember commands [duplicate]
Can Omnicomplete in Vim for python/3 complete function names or just methods?
Slowness on iterating over namedtuple and dicts for defined pairs
I'm trying to put these inputs into a text file, [duplicate]
Printing Dictionaries? [closed]
OpenCV's frame count always printing 0
Including first and last elements in list comprehension
how to see output history on pycharm?
plotting just a single rgb color in matplotlib
Trying to edit an entry, but DB does not update
pymc unexpected model output

Categories

HOME
cntk
elixir
itext
json-ld
thunderbird-addon
survival-analysis
apache2
yocto
websphere-liberty
onenote-api
google-classroom
flexbox
getorgchart
window
camera-calibration
maxima
typeahead
ida
lstm
uisplitviewcontroller
r-lavaan
alfresco-share
aptana
chocolatey
raphael
prediction
url.action
skmaps
system.data.sqlite
reactiveui
websauna
exponential
stocks
pdflatex
fabric-digits
ios-ui-automation
honeysql
oscommerce
office365connectors
haskell-pipes
silverlight-3.0
fltk
installshield-2012
rule
exiftool
jrules
dojox.mobile
lftp
scalafx
worker
pinvoke
pluck
infinite-scroll
uicollectionviewlayout
visual-studio-templates
vici
pdflib
packagemaker
ruby-2.0
mercurial-hook
spservices
cctray
mogrify
google-earth-plugin
ticket-system
kallithea
ibmsbt
em
proxies
kraken.js
delphi-xe3
jstack
sanitization
goinstant
shortcuts
qss
htmltextwriter
wcf-web-api
separation-of-concerns
throttling
dcpu-16
pureftpd
msn
camtasia
trampolines
idictionary
handheld
gears

Resources

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
javascript
java
csharp
php
python
android
jquery
ruby
ios
html
Mobile App
Mobile App
Mobile App