mirror of
https://github.com/3x4byte/StreetsignRecognition.git
synced 2025-12-21 09:25:52 +00:00
added FV generator for edges,corners,counters
This commit is contained in:
50
edges-corners-counters.py
Normal file
50
edges-corners-counters.py
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
import cv2
|
||||||
|
import numpy as np
|
||||||
|
from os import walk
|
||||||
|
import csv
|
||||||
|
|
||||||
|
def detect_corners(gray_image, max_corners=100, quality_level=0.14, min_distance=1):
|
||||||
|
corners = cv2.goodFeaturesToTrack(cv2.blur(gray_image, (5,5)), maxCorners=max_corners, qualityLevel=quality_level, minDistance=min_distance)
|
||||||
|
if corners is not None:
|
||||||
|
corners = np.int0(corners)
|
||||||
|
return len(corners), corners
|
||||||
|
else:
|
||||||
|
return 0, []
|
||||||
|
|
||||||
|
def detect_edges(gray_image):
|
||||||
|
edges = cv2.Canny(cv2.blur(gray_image, (5,5)), threshold1=100, threshold2=200)
|
||||||
|
edge_count = np.count_nonzero(edges)
|
||||||
|
return edge_count, edges
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def detect_contours(edge_image):
|
||||||
|
contours, _ = cv2.findContours(edge_image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
|
||||||
|
contour_count = len(contours)
|
||||||
|
return contour_count, contours
|
||||||
|
|
||||||
|
|
||||||
|
def feature_vector(image_path):
|
||||||
|
resultVector = {}
|
||||||
|
img = cv2.imread(image_path)
|
||||||
|
image_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
|
||||||
|
|
||||||
|
corners_count, _ = detect_corners(image_gray)
|
||||||
|
edges_count, edges = detect_edges(image_gray)
|
||||||
|
contours_count, _ = detect_contours(edges)
|
||||||
|
|
||||||
|
resultVector["corners"] = corners_count % 100
|
||||||
|
resultVector["edges"] = edges_count / 1000
|
||||||
|
resultVector["contours"] = contours_count * 0.1
|
||||||
|
|
||||||
|
return resultVector
|
||||||
|
|
||||||
|
|
||||||
|
filenames = next(walk("images"), (None, None, []))[2] # [] if no file
|
||||||
|
|
||||||
|
with open('dict.csv', 'w') as csv_file:
|
||||||
|
writer = csv.DictWriter(csv_file, fieldnames=['corners', 'edges', 'contours'])
|
||||||
|
writer.writeheader()
|
||||||
|
for filename in filenames:
|
||||||
|
result = feature_vector(f'images/{filename}')
|
||||||
|
writer.writerow(result)
|
||||||
Reference in New Issue
Block a user