HiraganaOCR / get_coordinate.py
sabari
initial commit
442387d
# -*- coding: utf-8 -*-
"""
Created on Sat Jul 22 14:22:34 2023
@author: SABARI
"""
import cv2
import numpy as np
from skimage.filters import threshold_sauvola
import tensorflow as tf
from tensorflow.keras import backend as K
import json
def sauvola_thresholding(grayImage_,window_size=15):
""""
Sauvola thresholds are local thresholding techniques that are
useful for images where the background is not uniform, especially for text recognition
grayImage--- Input image should be in 2-Dimension Gray Scale format
window_size --- It represents the filter window size
"""
thresh_sauvolavalue = threshold_sauvola(grayImage_, window_size=window_size)
thresholdImage_=(grayImage_>thresh_sauvolavalue)
return 1- np.uint8(np.array(thresholdImage_)*1)
# Function to get coordinates of the object
def get_object_coordinates(image):
# Convert the image from BGR to GRAY color space
grayImage=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
# Create a mask using the specified color range
thresholdedImage=sauvola_thresholding(grayImage)
kernel = np.ones((35, 1), np.uint8)
dilated_image = cv2.dilate(thresholdedImage, kernel, iterations=1)
# Find contours in the mask
contours, _ = cv2.findContours(dilated_image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
coordinate = []
# Check if any contours were found
if len(contours) > 0:
for i in range(len(contours)):
# Get the largest contour (assuming it's the object of interest)
# largest_contour = max(contours, key=cv2.contourArea)
# Get the bounding box of the contour
x, y, w, h = cv2.boundingRect(contours[i])
coordinate.append([x,y,x+w,y+h])
# Calculate the center coordinates of the object
# center_x = x + w // 2
# center_y = y + h // 2
return coordinate,thresholdedImage
else:
# Return None if no object was found
return None,thresholdedImage