Хорошо ли я отрефакторил кусок кода в ооп?
Правильно ли я все сделал? Я новичок и изучаю программирование. Пожалуйста подскажите что можно улучшить и все ли я сделал правильно?
Код до:
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
img = cv.imread('photo_papl.png', cv.IMREAD_UNCHANGED)
bobber = cv.imread('bobber.png', cv.IMREAD_UNCHANGED)
res = cv.matchTemplate(img, bobber, cv.TM_CCOEFF_NORMED) # search template on image
min_val, max_val, min_loc, max_loc = cv.minMaxLoc(res)
print('[~]Top left -: ' + str(max_loc))
print('[~]Best match confidence -: ' + str(max_val))
threshold = 0.9
if max_val >= threshold:
print('[+]Found Object')
# get dimensions of the image
bobber_w = bobber.shape[1]
bobber_h = bobber.shape[0]
top_left = max_loc
bottom_right = (top_left[0] + bobber_w, top_left[1] + bobber_h)
rectangle_object = cv.rectangle(img, top_left, bottom_right,
color=(0,255,0), thickness=2, lineType=cv.LINE_4)
cv.imshow('Result', rectangle_object) #
cv.waitKey() #
else:
print('[-]Object not found')
Код после
import cv2 as cv
import numpy as np
import matplotlib
class Object_detect():
def __init__(self, img, template):
self.img = cv.imread(img, cv.IMREAD_UNCHANGED)
self.template = cv.imread(template, cv.IMREAD_UNCHANGED)
res_mt = cv.matchTemplate(self.img, self.template, cv.TM_CCOEFF_NORMED)
self.min_val, self.max_val, self.min_loc, self.max_loc = cv.minMaxLoc(res_mt)
print('[~] Top left corner -: ' + str(self.max_loc))
print('[~] Best match confidence -: ' + str(self.max_val))
def detect(self):
threshold = 0.8
if self.max_val >= threshold:
print('[+]Found object')
template_w = self.template.shape[1]
template_h = self.template.shape[0]
top_left = self.max_loc
bottom_right = (top_left[0] + template_w, top_left[1] + template_h)
rectangle_object = cv.rectangle(self.img, top_left, bottom_right,
color=(0,255,0), thickness=2, lineType=cv.LINE_4)
cv.imshow('Result', rectangle_object)
cv.waitKey()
else:
print('[-]Object not found')
start = Object_detect('image.png','template.png').detect()