python 事始め (3) マウスで操作

昔つっくったものは,確か,マウスで操作するものでした。今回の物も,マウスで操作できるようにしま
した。
paython では,

サブルーチンの作成
変数のフォーカス

が,慣れ親しんだ C とは,若干違うようで手間取りました。何とか,下記の動画のように操作できるも
ができました。

import cv2
import os

# ファイル名を配列に格納
file_names = ['00.jpg', '01.jpg', '02.jpg','03.jpg','04.jpg','05.jpg','06.jpg','07.jpg','08.jpg','09.jpg','10.jpg',\
		'11.jpg','12.jpg','13.jpg','14.jpg','15.jpg','16.jpg','17.jpg','18.jpg','19.jpg','20.jpg','21.jpg',\
		'22.jpg','23.jpg','24.jpg','25.jpg','26.jpg','27.jpg','28.jpg','29.jpg','30.jpg','31.jpg','32.jpg',\
		'33.jpg','34.jpg','35.jpg','36.jpg','37.jpg','38.jpg','39.jpg','40.jpg','41.jpg','42.jpg','43.jpg',\
		'44.jpg','45.jpg','46.jpg','47.jpg','48.jpg','49.jpg','50.jpg','51.jpg','52.jpg','53.jpg','54.jpg',\
		'55.jpg','56.jpg','57.jpg','58.jpg','59.jpg','60.jpg','61.jpg','62.jpg','63.jpg','64.jpg']

#グローバル変数の定期
img=file_names[0]
kaisu=0

# ベースパスを設定
base_path = 'E:/python-kaihatu/nanikana/mask-jp'

#背景画像を読み込み
ima1 = cv2.imread('E:/python-kaihatu/nanikana/gazou/buta1.jpg')

def gazou_over():
	global kaisu
	# フルパスを作成
	full_path = os.path.join(base_path, file_names[kaisu])
	# マスクファイルを開く
	mask = cv2.imread(full_path)
	if mask is not None:
		#画像の合成
		result = cv2.bitwise_and(mask,ima1)
	return result

def mouseEvents(event, x, y, flags, param):
	global kaisu
	try:
		# 処理を記入
		if event == cv2.EVENT_LBUTTONDOWN:
			img=""
			if kaisu<64:
				print("左クリック")
				kaisu=kaisu+1
				img=gazou_over()
				cv2.imshow("test_image", img)
		if event == cv2.EVENT_RBUTTONDOWN:
			img=""
			if kaisu>0:
				print("右クリック")
				kaisu=kaisu-1
				img=gazou_over()
				cv2.imshow("test_image", img)
	except Exception as e:
		print(e)

result=gazou_over()
cv2.imshow("test_image", result)
cv2.setMouseCallback("test_image", mouseEvents)
cv2.waitKey(0)