fix notation

master
zen 3 years ago
parent 8431d9c300
commit af89067a80
  1. 16
      exemple/circul_detect.py
  2. 5
      exemple/find_filter.py
  3. 0
      exemple/mnist_trained_model.h5
  4. 19
      exemple/number_detect.py
  5. 46
      python/test_contur.py

@ -1,41 +1,53 @@
import cv2
import numpy as np
# Подключаемся к камере
cam = cv2.VideoCapture(0)
while True:
_, frame = cam.read()
# Перевод изображения в HSV
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
# Немного размываем изображение
hsv = cv2.blur(hsv,(5,5))
# Задаем параметр из прошлого примера
mask = cv2.inRange(hsv, (78,154,93),(86,224,255))
# С помощью специального алгоритма ищем контур обьекта
(contours, hierarchy) = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# Отрисовывем найденый контур чтобы его было видно на экране
cv2.drawContours(frame, contours, -1, (255,0,0), 3, cv2.LINE_AA, hierarchy, 1 )
max_radius = 0
center = (0,0)
# Находим контур с максимальным радиусом
for contour in contours:
(x,y),radius = cv2.minEnclosingCircle(contour)
if max_radius < int(radius):
max_radius = int(radius)
center = (int(x),int(y))
# Описываем максимальный контур кругом
frame = cv2.circle(frame,center,max_radius,(0,255,0),2)
S = 3.1415 * max_radius * max_radius
# Выводим на эран площадь круга
cv2.putText(frame, str(S), (30, 30),cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 10, 10), 2)
# Выводим сообщение если круг слишком близко или далеко
if S > 100:
if S > 10000:
cv2.putText(frame, "UP", (30, 60),cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 10, 10), 2)
elif S < 5000:
cv2.putText(frame, "DOWN", (30, 60),cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 10, 10), 2)
# Промежуточные изображения
#cv2.imshow("Image with opening", mask)
#cv2.imshow("Image with closing", hsv)
# выводим то что получилось вместе с текстом и контуром
cv2.imshow("Image", frame)
k = cv2.waitKey(2)

@ -27,7 +27,8 @@ crange = [0,0,0, 0,0,0]
while True:
flag, img = cam.read()
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV )
# Перевод изображения в HSV
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# считываем значения бегунков
h1 = cv2.getTrackbarPos('h1', 'settings')
@ -63,4 +64,4 @@ while True:
break
cam.release()
cv2.destroyAllWindows()
cv2.destroyAllWindows()

@ -2,25 +2,12 @@ import cv2
import numpy as np
import keras
'''
задачи
1) находить контур цифры
2) получать его координаты, вывести отдельным изображением
3) масштабировать его под нужный размер
4) загнать это на нейронную сеть https://habr.com/ru/post/466565/
5) вывести результат
очень сильно шумит изображение
'''
def find_number(frame):
# функция выполняет предобработку изображения
# находит область с цифрой по контурам
# далее в цикле перебераем найденные контуры
# далее в цикле перебераем найденные контуры применяя фильтры
# если контур найден, то меняем разрешение на 28*28
# выполняем бинаризацию, делим на 255 и инвертируем вычитая 1
# flag нужен, чтобы он не выводил единицу, если цифра не найдена
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray,(3,3), 0)
edges = cv2.Canny(blur, 50, 100)
@ -75,7 +62,7 @@ def find_number(frame):
if __name__ == '__main__':
cam = cv2.VideoCapture(0)
model = keras.models.load_model('mnist_trained_model.h5')
model = keras.models.load_model("mnist_trained_model.h5")
try:
while True:
_, frame = cam.read()
@ -95,4 +82,4 @@ if __name__ == '__main__':
except Exception as e:
cam.release()
cv2.destroyAllWindows()
print(e)
print(e)

@ -1,46 +0,0 @@
import cv2
import numpy as np
# NOT WORCK !!!!
def find_contours_of_cards(image):
blurred = cv2.GaussianBlur(image, (3, 3), 0)
T, thresh_img = cv2.threshold(blurred, 215, 255,
cv2.THRESH_BINARY)
(cnts, _) = cv2.findContours(thresh_img,
cv2.RETR_EXTERNAL,
cv2.CHAIN_APPROX_SIMPLE)
return cnts
def find_coordinates_of_cards(cnts, image):
cards_coordinates = {}
for i in range(0, len(cnts)):
x, y, w, h = cv2.boundingRect(cnts[i])
if w > 20 and h > 30:
img_crop = image[y - 15:y + h + 15,
x - 15:x + w + 15]
cards_name = find_features(img_crop)
cards_coordinates[cards_name] = (x - 15,
y - 15, x + w + 15, y + h + 15)
return cards_coordinates
cam = cv2.VideoCapture(0)
while True:
_, frame = cam.read()
img = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
img = cv2.GaussianBlur(img, (3, 3), 0)
# Все больше 215 станет 255, все что меньше 0
T, thresh_img = cv2.threshold(img, 215, 255, cv2.THRESH_BINARY)
cv2.imshow("Image", img)
cv2.imshow("Image with opening", thresh_img)
#cv2.imshow("Image with closing", res)
k = cv2.waitKey(2)
if k == 27:
cv2.destroyAllWindows()
break
Loading…
Cancel
Save