def callImageCropper(self): while(True): url = "http://localhost/image_cropper.php" coordinatesFile = open(self.COORDINATES_FILE_NAME) currentState = [] print "---------------------------------------" for content in coordinatesFile: coordinates = content.split(self.COORDINATES_SPLIT_DELIMITER) getString = ""; count = 0 for x in range(len(coordinates)/2): getString = getString + "x" + str(x+1) + "=" + str(coordinates[count]) + "&" count = count + 1 getString = getString + "y" + str(x+1) + "=" + str(coordinates[count]) + "&" count = count + 1 getString = getString.replace('', '')[:-1] url = url + "?" + getString # predict method in 'hog.py' prediction = predict(url, self.PARKING_STATE_FILE_NAME) print url print prediction currentState.append(prediction) url = "http://localhost/image_cropper.php" self.saveToFile(currentState) del currentState[:] time.sleep(30)
def main(): classifier = hog.load_classifier(filename) image_name = input("Podaj nazwę pliku ze zdjęciem:") img = cv2.imread(image_name, 0) img = cv2.resize(img, (width, height)) img = numpy.float32(img) histogram = numpy.asarray(hog.hog(img)).reshape(1, -1) y = hog.predict(classifier, histogram) if y == 1: print("Na zdjęciu znajduje się człowiek") elif y == 0: print("Na zdjęciu nie znajduje się człowiek")
def run(self): url = self.url # Capture first frame to get size frame = SimpleCV.Image(url).getBitmap() frame_size = cv.GetSize(frame) grey_image = cv.CreateImage(cv.GetSize(frame), cv.IPL_DEPTH_8U, 1) grey_image_later = cv.CreateImage(cv.GetSize(frame), cv.IPL_DEPTH_8U, 1) moving_average = cv.CreateImage(cv.GetSize(frame), cv.IPL_DEPTH_32F, 3) difference = None file_counter=0 while True: color_image = SimpleCV.Image(url).getBitmap() # Smooth to get rid of false positives cv.Smooth(color_image, color_image, cv.CV_GAUSSIAN, 3, 0) if not difference: # Initialize difference = cv.CloneImage(color_image) temp = cv.CloneImage(color_image) cv.ConvertScale(color_image, moving_average, 1.0, 0.0) else: cv.RunningAvg(color_image, moving_average, 0.020, None) # Convert the scale of the moving average. cv.ConvertScale(moving_average, temp, 1.0, 0.0) # Minus the current frame from the moving average. cv.AbsDiff(color_image, temp, difference) # Convert the image to grayscale. cv.CvtColor(difference, grey_image, cv.CV_RGB2GRAY) cv.CvtColor(difference, grey_image_later, cv.CV_RGB2GRAY) # Convert the image to black and white. cv.Threshold(grey_image, grey_image, 70, 255, cv.CV_THRESH_BINARY) # Dilate and erode to get object blobs cv.Dilate(grey_image, grey_image, None, 18) cv.Erode(grey_image, grey_image, None, 10) # Calculate movements storage = cv.CreateMemStorage(0) contour = cv.FindContours(grey_image, storage, cv.CV_RETR_CCOMP, cv.CV_CHAIN_APPROX_SIMPLE) points = [] count = 0 font = cv.InitFont(cv.CV_FONT_HERSHEY_SIMPLEX, 1, 1, 0, 3, 8) while contour: # Draw rectangles bound_rect = cv.BoundingRect(list(contour)) contour = contour.h_next() pt1 = (bound_rect[0], bound_rect[1]) pt2 = (bound_rect[0] + bound_rect[2], bound_rect[1] + bound_rect[3]) points.append(pt1) points.append(pt2) dist = numpy.linalg.norm(numpy.array(pt1) - numpy.array(pt2)) center_point = (((pt1[0] + pt2[0])/2), ((pt1[1] + pt2[1])/2)) width = pt2[0] - pt1[0] height = pt2[1] - pt1[1] area = width * height if area < 60000 and area > 30000: sub = cv.GetSubRect(grey_image_later,(pt1[0],pt1[1],width,height)) print "sub size ", cv.GetSize(sub) #sub_grey = cv.CreateImage(cv.GetSize(sub), cv.IPL_DEPTH_8U, 1) #sub = rgb2grey(sub) #cv.CvtColor(sub, sub_grey, cv.CV_RGB2GRAY) thumbnail = cv.CreateImage((300, 197), 8, 1) cv.SaveImage("image.jpg",sub) image = imread("image.jpg") cv.Resize(cv.fromarray(image), thumbnail) print "thumbnail ", cv.GetSize(thumbnail) cv.SaveImage("image_resized.jpg", thumbnail) image_resized = imread("image_resized.jpg") cv.NamedWindow("Target") cv.ShowImage("Target", thumbnail) cv.WaitKey(0) #image = imread("/media/Primary/HOG/images/train_pos/image_0001.jpg") #image = rgb2grey(image) #cv_im = cv.CreateImage((320,200), cv.IPL_DEPTH_8U, 1) #thumbnail = cv.CreateImage((width, height), 8, 3) #cv.Copy(sub, thumbnail) #thumbnail = Image.fromstring("L", cv.GetSize(sub), sub.tostring()) #cv.Resize(sub, thumbnail) #print "resized ", type(thumbnail) #time.sleep(20) predict(image_resized) #time.sleep(500000) # PutText(img, text, org, font, color) #text = str(count) #count += 1 #cv.PutText(color_image, text, (pt2[0] + 20, pt2[1] - 20), font, cv.CV_RGB(255, 255, 255)) #cv.Circle(color_image, center_point, int(dist/2), cv.CV_RGB(255, 255, 255), 1) '''num_points = len(points) if num_points: # Draw bullseye in midpoint of all movements x = y = 0 for point in points: x += point[0] y += point[1] x /= num_points y /= num_points center_point = (x, y) cv.Circle(color_image, center_point, 40, cv.CV_RGB(255, 255, 255), 1) cv.Circle(color_image, center_point, 30, cv.CV_RGB(255, 100, 0), 1) cv.Circle(color_image, center_point, 20, cv.CV_RGB(255, 255, 255), 1) cv.Circle(color_image, center_point, 10, cv.CV_RGB(255, 100, 0), 5) ''' # Display frame to user #cv.ShowImage("Target", color_image) # Listen for ESC or ENTER key c = cv.WaitKey(7) % 0x100 if c == 27 or c == 10: break