Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import time
- import cv2 as cv
- import numpy as np
- from matplotlib import pyplot as plt
- from matplotlib import patches
- #waarde om groote uit te rekenen (pixels naar cm^2)
- omrekenConstante = 5.42
- #naam afbeelding
- afbeelding1 = "AFBE1.jpg" #achtergrondafbeelding
- afbeelding2 = "AFBE2.jpg" #afbeelding met object
- afbeelding3 = "AFBE3.jpg" #afbeelding met object zonder achtergrond (wordt gegenereerd)
- #gevoeligheid van de detectie
- RGBValue = 100
- Edgedetection1 = 150 #standaard 100
- Edgedetection2 = 300 #standaard 200
- #gebruik camera of afbeeldingen
- gebruikCamera = True
- ###
- ### # begin code
- ###
- if (gebruikCamera):
- #foto maken met webcam
- cap = cv.VideoCapture(0)
- ret = cap.set(3,320)
- ret = cap.set(4,240)
- ret, frame = cap.read()
- gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
- cv.imshow('frame',gray)
- print("Plaats object nu!" + '\n' + "druk op q" )
- while(True):
- ret2, frame2 = cap.read()
- rgb = cv.cvtColor(frame, cv.COLOR_BGR2BGRA)
- cv.imshow('frame', rgb)
- #druk op q om de 2e afbeelding te maken
- if cv.waitKey(1) & 0xFF == ord('q'):
- break
- cap.release()
- image1 = frame
- image2 = frame2
- else:
- #afbeeldingen laden en verwerken
- image1 = cv.imread(afbeelding1)
- image2 = cv.imread(afbeelding2)
- #achtergrond verwijderen
- image3 = cv.subtract(image1,image2)
- cv.imwrite( afbeelding3, image3 )
- edges = cv.Canny(image3,Edgedetection1,Edgedetection2)
- # haal de resolutie uit de eerste foto
- height, width = image1.shape[:2]
- RESx = width
- RESy = height
- #randen berekkenen
- minx = RESx #meest linker waarde
- maxx = 0 # meest rechter waarde
- miny = RESy #onderste waarde
- maxy = 0 #bovenste waarde
- for x in range(0, RESx):
- for y in range(0, RESy):
- if ((image3[y,x])[0] > RGBValue):
- if (x < minx):
- minx = x
- if (x > maxx):
- maxx = x
- if (y < miny):
- miny = y
- if (y > maxy):
- maxy = y
- print(str(minx) + ", " + str(maxx))
- print(str(miny) + ", " + str(maxy))
- #oppervlakte berekenen
- deltaX = maxx - minx
- deltaY = maxy - miny
- oppervlakte = deltaX * deltaY * omrekenConstante
- print("Object gedetecteerd van ~" + str(oppervlakte) + " cm^2 (" + str(deltaX * deltaY) + " pixels)")
- #popup met afbeeldingen weergeven
- plt.subplot(221),plt.imshow(image1,cmap = 'gray')
- plt.title('Original Image1'), plt.xticks([]), plt.yticks([])
- plt.subplot(222),plt.imshow(image2,cmap = 'gray')
- plt.title('Original Image2'), plt.xticks([]), plt.yticks([])
- plt.subplot(223),plt.imshow(image3,cmap = 'gray')
- plt.title('Background removed'), plt.xticks([]), plt.yticks([])
- plt.subplot(224),plt.imshow(edges,cmap = 'gray')
- plt.title('Edge Image'), plt.xticks([]), plt.yticks([])
- plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement