Advertisement
wpinda

ImageRecognition

Feb 22nd, 2018
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.84 KB | None | 0 0
  1. import time
  2. import cv2 as cv
  3. import numpy as np
  4. from matplotlib import pyplot as plt
  5. from matplotlib import patches
  6.  
  7. #waarde om groote uit te rekenen (pixels naar cm^2)
  8. omrekenConstante = 5.42
  9.  
  10. #naam afbeelding
  11. afbeelding1 = "AFBE1.jpg" #achtergrondafbeelding
  12. afbeelding2 = "AFBE2.jpg" #afbeelding met object
  13. afbeelding3 = "AFBE3.jpg" #afbeelding met object zonder achtergrond (wordt gegenereerd)
  14.  
  15. #gevoeligheid van de detectie
  16. RGBValue = 100
  17. Edgedetection1 = 150 #standaard 100
  18. Edgedetection2 = 300 #standaard 200
  19.  
  20. #gebruik camera of afbeeldingen
  21. gebruikCamera = True
  22.  
  23.  
  24. ###
  25. ### # begin code
  26. ###
  27.  
  28. if (gebruikCamera):
  29.     #foto maken met webcam
  30.     cap = cv.VideoCapture(0)
  31.     ret = cap.set(3,320)
  32.     ret = cap.set(4,240)
  33.  
  34.     ret, frame = cap.read()
  35.     gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
  36.     cv.imshow('frame',gray)
  37.  
  38.     print("Plaats object nu!" + '\n' + "druk op q" )
  39.     while(True):
  40.         ret2, frame2 = cap.read()
  41.         rgb = cv.cvtColor(frame, cv.COLOR_BGR2BGRA)
  42.         cv.imshow('frame', rgb)
  43.  
  44.         #druk op q om de 2e afbeelding te maken
  45.         if cv.waitKey(1) & 0xFF == ord('q'):
  46.             break
  47.     cap.release()
  48.  
  49.     image1 = frame
  50.     image2 = frame2
  51.    
  52. else:
  53.     #afbeeldingen laden en verwerken
  54.     image1 = cv.imread(afbeelding1)
  55.     image2 = cv.imread(afbeelding2)
  56.  
  57.  
  58.  
  59. #achtergrond verwijderen
  60. image3 = cv.subtract(image1,image2)
  61. cv.imwrite( afbeelding3, image3 )
  62. edges = cv.Canny(image3,Edgedetection1,Edgedetection2)
  63.  
  64.  
  65. # haal de resolutie uit de eerste foto
  66. height, width = image1.shape[:2]
  67. RESx = width
  68. RESy = height
  69.  
  70. #randen berekkenen
  71. minx = RESx #meest linker waarde
  72. maxx = 0 # meest rechter waarde
  73. miny = RESy #onderste waarde
  74. maxy = 0 #bovenste waarde
  75.  
  76. for x in range(0, RESx):
  77.     for y in range(0, RESy):
  78.         if ((image3[y,x])[0] > RGBValue):
  79.             if (x < minx):
  80.                 minx = x
  81.  
  82.             if (x > maxx):
  83.                 maxx = x
  84.  
  85.             if (y < miny):
  86.                 miny = y
  87.  
  88.             if (y > maxy):
  89.                 maxy = y
  90.  
  91. print(str(minx) + ", " + str(maxx))
  92. print(str(miny) + ", " + str(maxy))
  93.  
  94. #oppervlakte berekenen
  95. deltaX = maxx - minx
  96. deltaY = maxy - miny
  97. oppervlakte = deltaX * deltaY * omrekenConstante
  98. print("Object gedetecteerd van ~" + str(oppervlakte) + " cm^2 (" + str(deltaX * deltaY) + " pixels)")
  99.  
  100. #popup met afbeeldingen weergeven
  101. plt.subplot(221),plt.imshow(image1,cmap = 'gray')
  102. plt.title('Original Image1'), plt.xticks([]), plt.yticks([])
  103.  
  104. plt.subplot(222),plt.imshow(image2,cmap = 'gray')
  105. plt.title('Original Image2'), plt.xticks([]), plt.yticks([])
  106.  
  107. plt.subplot(223),plt.imshow(image3,cmap = 'gray')
  108. plt.title('Background removed'), plt.xticks([]), plt.yticks([])
  109.  
  110. plt.subplot(224),plt.imshow(edges,cmap = 'gray')
  111. plt.title('Edge Image'), plt.xticks([]), plt.yticks([])
  112.  
  113.  
  114. plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement