53 lines
1.6 KiB
Python
53 lines
1.6 KiB
Python
import cv2 as cv
|
|
import numpy as np
|
|
import os
|
|
from time import time
|
|
from window_capture import WindowCapture
|
|
from stun_vision import StunVision
|
|
from hsvfilter import HsvFilter
|
|
|
|
# Change the working directory to the folder this script is in.
|
|
# Doing this because I'll be putting the files from each video in their own folder on GitHub
|
|
os.chdir(os.path.dirname(os.path.abspath(__file__)))
|
|
|
|
|
|
# initialize the WindowCapture class
|
|
wincap = WindowCapture('Albion Online Client')
|
|
# initialize the Vision class
|
|
vision_limestone = Vision('albion_limestone_processed.jpg')
|
|
# initialize the trackbar window
|
|
vision_limestone.init_control_gui()
|
|
|
|
# limestone HSV filter
|
|
hsv_filter = HsvFilter(0, 180, 129, 15, 229, 243, 143, 0, 67, 0)
|
|
|
|
loop_time = time()
|
|
while(True):
|
|
|
|
# get an updated image of the game
|
|
screenshot = wincap.get_screenshot()
|
|
|
|
# pre-process the image
|
|
processed_image = vision_limestone.apply_hsv_filter(screenshot, hsv_filter)
|
|
|
|
# do object detection
|
|
rectangles = vision_limestone.find(processed_image, 0.46)
|
|
|
|
# draw the detection results onto the original image
|
|
output_image = vision_limestone.draw_rectangles(screenshot, rectangles)
|
|
|
|
# display the processed image
|
|
cv.imshow('Processed', processed_image)
|
|
cv.imshow('Matches', output_image)
|
|
|
|
# debug the loop rate
|
|
print('FPS {}'.format(1 / (time() - loop_time)))
|
|
loop_time = time()
|
|
|
|
# press 'q' with the output window focused to exit.
|
|
# waits 1 ms every loop to process key presses
|
|
if cv.waitKey(1) == ord('q'):
|
|
cv.destroyAllWindows()
|
|
break
|
|
|
|
print('Done.') |