Files
@ 40cc3b625eb2
Branch filter:
Location: OneEye/exp/hough.py - annotation
40cc3b625eb2
2.6 KiB
text/x-python
work on polar hough
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)
|