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