Files
@ 4d9660f111e4
Branch filter:
Location: OneEye/exp/hough.py - annotation
4d9660f111e4
2.6 KiB
text/x-python
grid: refactored out transformation matrix construction
6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 6f867d8eac54 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 6f867d8eac54 891cf60dcb1e 6f867d8eac54 6f867d8eac54 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 6f867d8eac54 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 6f867d8eac54 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e 891cf60dcb1e | import os
import sys
import numpy as np
import cv2 as cv
from annotations import DataFile,computeBoundingBox
def show(img,filename="x"):
cv.imshow(filename,img)
cv.waitKey(0)
cv.destroyAllWindows()
def filterVert(edges):
# !! cv.morphologyEx()
kernel = np.array([[1,0,1],[1,0,1],[1,0,1]],np.uint8)
edges = cv.erode(edges,kernel)
kernel=np.array([[0,1,0],[0,1,0],[0,1,0]],np.uint8)
edges=cv.dilate(edges,kernel)
return edges
def filterHor(edges):
kernel = np.array([[1,1,1],[0,0,0],[1,1,1]],np.uint8)
edges = cv.erode(edges,kernel)
kernel=np.array([[0,0,0],[1,1,1],[0,0,0]],np.uint8)
edges=cv.dilate(edges,kernel)
return edges
def filterDiag(edges):
kernel = np.array([[0,0,1],[1,0,0],[0,1,0]],np.uint8)
edges1 = cv.erode(edges,kernel)
kernel=np.array([[1,0,0],[0,1,0],[0,0,1]],np.uint8)
edges1=cv.dilate(edges1,kernel)
kernel = np.array([[0,1,0],[1,0,0],[0,0,1]],np.uint8)
edges2 = cv.erode(edges,kernel)
kernel=np.array([[0,0,1],[0,1,0],[1,0,0]],np.uint8)
edges2=cv.dilate(edges2,kernel)
return edges1+edges2
def houghLines(bwImg):
colorImg=cv.cvtColor(bwImg,cv.COLOR_GRAY2BGR)
lines = cv.HoughLinesP(bwImg,1,np.pi/180,10,minLineLength=10,maxLineGap=40)
if lines is None: lines=[]
for line in lines:
x1,y1,x2,y2 = line[0]
cv.line(colorImg,(x1,y1),(x2,y2),(0,255,0),1)
show(colorImg)
if __name__=="__main__":
i=sys.argv[1]
annotations=DataFile("/home/laman/Projekty/python/oneEye/images/annotations.json.gz")
filename="{0}.jpg".format(i)
img=cv.imread(os.path.join("/home/laman/Projekty/python/oneEye/images/",filename))
(x1,y1,x2,y2)=computeBoundingBox(annotations[filename][0])
img=img[y1:y2, x1:x2, :]
# blurred=cv.GaussianBlur(img,(5,5),0)
# small=cv.resize(img,None,fx=0.5,fy=0.5,interpolation=cv.INTER_AREA)
small=img
clahe = cv.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
gray=cv.cvtColor(small,cv.COLOR_BGR2GRAY)
# gray=clahe.apply(gray)
show(gray)
edges=cv.Canny(gray,70,130)
show(edges)
edges=filterHor(edges)+filterVert(edges)+filterDiag(edges)
show(edges)
# kernel = np.ones((2,2),np.uint8)
# edges = cv.morphologyEx(edges, cv.MORPH_DILATE, kernel)
# show(edges)
# edges=cv.morphologyEx(edges,cv.MORPH_ERODE,kernel)
# show(edges)
colorEdges=cv.cvtColor(edges,cv.COLOR_GRAY2BGR)
# show(blurred)
# show(small)
# lines = cv.HoughLines(edges,1,np.pi/180,200)
# if lines is None: lines=[]
# for line in lines:
# rho,theta = line[0]
# a = np.cos(theta)
# b = np.sin(theta)
# x0 = a*rho
# y0 = b*rho
# x1 = int(x0 + 1000*(-b))
# y1 = int(y0 + 1000*(a))
# x2 = int(x0 - 1000*(-b))
# y2 = int(y0 - 1000*(a))
# cv.line(colorEdges,(x1,y1),(x2,y2),(0,0,255),1)
houghLines(edges)
|