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

nvprof is using all available GPU's when profiling python script
Get stdout from Popen when line is not being terminated
how to specify the version of python in command line for pip install
Can't see error in code
Can't run a SSH command with Paramiko/Python
Passing text file input to shell script for Syntaxnet
Can't get attribute 'function_inner' on <module '__mp_main__' from 'E:\\python\\Test\\test.py'>
Python Pandas Get Unique Count of Column
Printing results to text file
comparing and finding error between two arrays of different sizes using numpy
Django filter sort by number of ForeignKey related objects
Pipe the ouput of a hive query run on a remote machine to the local machine using python
Error message installing “Gnuplot-py” with “python setup.py install” command in Mac OS Sierra
Matplotlib plot window is not closing with command-w
uuid with different languages
In Python, how can I get a substring that's in between coordinates XY of another string?

Categories

HOME
crystal-reports
vue.js
admin-on-rest
redis
json-ld
qpython3
memory-leaks
ruby-on-rails-3
csvhelper
rfc
appmaker
branch.io
flexbox
wysiwyg
uiscrollview
ctypes
activesync
cloudflare
ejs
scala-native
opera-mini
jcl
android-fragmentactivity
deb
apply
kitematic
java-ee-7
pipelinedb
configure
exponential
modelandview
mapguide
large-data
threshold
xen
vsts-package-management
infusionsoft
intellilock
nashorn
google-account
powermta
finite-element-analysis
range-v3
seamless-immutable
goquery
ogre3d
udev
maintenance
chrome-remote-desktop
pluck
infinite-scroll
selenium-firefoxdriver
ingres
rxvt
inject
picasa
bacnet
multifile-uploader
spatial-query
gradle-release-plugin
logcat
distribute
mfc-feature-pack
sun-codemodel
cctray
file-diffs
matcaffe
on-duplicate-key
crash-dumps
coypu
scrollspy
epl
guzzle6
viewflipper
libsndfile
ghostdoc
author
ssms-addin
kraken.js
voldemort
config-files
reserved-words
flash-cc
opendata
robospice
vmware-server
zend-lucene
icefaces-3
deploying
wcf-web-api
unions
visual-web-gui
hinstance
newsstand-kit
authenticode
nvelocity
symbol-server
hibernate3-maven-plugin
surefire
revert
boost-date-time
callgrind
revision
winsnmp

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