Advertisement
Guest User

neural

a guest
Oct 23rd, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.04 KB | None | 0 0
  1. import numpy as np
  2. import cv2
  3.  
  4. print(cv2.__version__)
  5.  
  6. def mouse_draw(event, x,y, flags, params):
  7. if event == cv2.EVENT_LBUTTONDOWN:
  8. raudoni.append((x,y))
  9. if event == cv2.EVENT_RBUTTONDOWN:
  10. melyni.append((x,y))
  11. if event == cv2.EVENT_MBUTTONDOWN:
  12. zali.append((x,y))
  13.  
  14.  
  15. raudoni = []
  16. melyni = []
  17. zali = []
  18. laukas = np.ones((500,500,3),dtype=np.uint8)*255
  19. pav = 'langelis'
  20. cv2.namedWindow(pav)
  21. cv2.setMouseCallback(pav,mouse_draw)
  22.  
  23. while True:
  24. for i in range(0,len(raudoni)):
  25. cv2.circle(laukas,(raudoni[i][0],raudoni[i][1]),10,(0,0,255),-1)
  26. for i in range(0,len(melyni)):
  27. cv2.circle(laukas,(melyni[i][0],melyni[i][1]),10,(255,0,0),-1)
  28. for i in range(0,len(zali)):
  29. cv2.circle(laukas,(zali[i][0],zali[i][1]),10,(0,255,0),-1)
  30.  
  31. cv2.imshow(pav,laukas)
  32. #to break while loop bite push the esc button
  33. if cv2.waitKey(10) == 27:
  34. break
  35. cv2.destroyAllWindows()
  36.  
  37.  
  38. #ANN modelis MLP - multy layer perceptron
  39. model = cv2.ml.ANN_MLP_create()
  40. layers = np.int32([2, 100, 100, 3])
  41.  
  42. model.setLayerSizes(layers)
  43. model.setTrainMethod(cv2.ml.ANN_MLP_BACKPROP)
  44. model.setBackpropMomentumScale(0.0)
  45. model.setBackpropWeightScale(0.001)
  46. model.setTermCriteria((cv2.TERM_CRITERIA_COUNT, 100, 0.01))
  47. model.setActivationFunction(cv2.ml.ANN_MLP_SIGMOID_SYM, 2, 1)
  48.  
  49. mokymo_imtis = np.zeros((len(raudoni)+len(melyni)+len(zali), 2), dtype=np.float32)
  50. target = np.zeros((len(raudoni)+len(melyni)+len(zali), 3), dtype=np.float32)
  51.  
  52. for i in range(0,len(raudoni)):
  53. for j in range(0,2):
  54. mokymo_imtis[i,j] = raudoni[i][j]
  55. target[i] = [1.0,0.0,0.0]
  56.  
  57. for i in range(0,len(melyni)):
  58. for j in range(0,2):
  59. mokymo_imtis[i + len(raudoni),j] = melyni[i][j]
  60. target[i + len(raudoni)] = [0.0,1.0,0.0]
  61.  
  62. for i in range(0,len(zali)):
  63. for j in range(0,2):
  64. mokymo_imtis[i + len(raudoni) + len(melyni),j] = zali[i][j]
  65. target[i + len(raudoni) + len(melyni)] = [0.0,0.0,1.0]
  66.  
  67. print(mokymo_imtis)
  68. print(target)
  69.  
  70. model.train(mokymo_imtis,cv2.ml.ROW_SAMPLE,target)
  71.  
  72. sample = np.array([[50, 100]],dtype=np.float32)
  73.  
  74. laukas = np.ones((500,500,3),dtype=np.uint8)*255
  75.  
  76. for i in range(0,500):
  77. for j in range(0,500):
  78. out = model.predict(np.float32([[i,j]]))
  79.  
  80. max_ind = np.argmax(out[1])
  81. max_val = np.max(out[1])
  82. if max_val>0.9:
  83. if max_ind == 0:
  84. cv2.circle(laukas,(i,j),1,(210,210,255),-1)
  85. if max_ind == 1:
  86. cv2.circle(laukas,(i,j),1,(210,210,100),-1)
  87. if max_ind == 2:
  88. cv2.circle(laukas,(i,j),1,(210,100,100),-1)
  89.  
  90. for i in range(0,len(raudoni)):
  91. cv2.circle(laukas,(raudoni[i][0],raudoni[i][1]),10,(0,0,255),-1)
  92. for i in range(0,len(melyni)):
  93. cv2.circle(laukas,(melyni[i][0],melyni[i][1]),10,(255,0,0),-1)
  94. for i in range(0,len(zali)):
  95. cv2.circle(laukas,(zali[i][0],zali[i][1]),10,(0,255,0),-1)
  96.  
  97. cv2.imshow(pav,laukas)
  98. cv2.waitKey()
  99. cv2.destroyAllWindows()
  100. #
  101.  
  102.  
  103.  
  104.  
  105.  
  106. print('geras')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement