Импортируем модули из библиотек Python.
import pyautogui, cv2, numpy, random
задаём время задержки для запуска кода
cv2.waitKey(1000)
создаем скриншот нашего экрана
image_screenshot = pyautogui.screenshot()
используя модуль numpy.array создаем массив нашей картинки
_array_image = numpy.array(image_screenshot)
Используя этот массив создаем копию нашей картинки
image = cv2.cvtColor(_array_image, cv2.COLOR_RGB2BGR)
при помощи модуля opencv создаем окно на весь экран и задаем свойство находиться поверх всех окон
cv2.namedWindow("window", cv2.WND_PROP_FULLSCREEN)
cv2.setWindowProperty("window",cv2.WND_PROP_FULLSCREEN,cv2.WINDOW_FULLSCREEN)
cv2.setWindowProperty("window",cv2.WND_PROP_TOPMOST,cv2.WND_PROP_TOPMOST)
импортируем два модуля для управления мышью по копии экрана
import win32api
import win32con
создаем функцию которая управляет курсором мыши
def mouse_evt(event, x, y, flags, param):
if event == cv2.EVENT_MOUSEMOVE:
win32api.SetCursor(win32api.LoadCursor(0, win32con.IDC_ARROW))
привязываем к нашему окошку мышь
cv2.setMouseCallback("window", mouse_evt)
cv2.imshow("window", image)
Определяем ширину нашей картинки и высоту
_width = _array_image.shape[1] #width
_height = _array_image.shape[0] #height
Сколько колоночек будет на всей ширине экрана
_columns = 40
_step = _width // _columns
Задаем величину смещения колонки вниз
_move_down_by = 5 #(пикселей)
Запускаем цикл и остановку при нажатии на клавишу 27(Esc)
_key = 0
while _key != 27:
_col = random.randint(0,_columns)*_step
И теперь в этом цикле создаем еще один цикл который будет смещать наши колонки вниз
for i in range(_move_down_by):
_array_image[i+1:_height,_col:_col+_step,:3] = _array_image[i:_height-1,_col:_col+_step,:3]
image = cv2.cvtColor(_array_image, cv2.COLOR_RGB2BGR)
cv2.imshow("window", image)
_key = cv2.waitKey(1)
cv2.destroyAllWindows()
В результате использования массива получается очень интересный эффект который ученики запоминают умение работать с однородными данными.
|