# -- coding: utf-8 -- from ctypes import * import cv2 # 4.2.0.32 import numpy as np from datetime import datetime import time drawing = False # 鼠标是否按下 ix, iy = -1, -1 # 初始坐标 roi = None # ROI区域 def _cal_roi(img): # 获取当前时间 now = datetime.now() # 转换为时间戳(秒) timestamp = time.mktime(now.timetuple()) # 转换为时间戳(毫秒) timestamp_ms = int(timestamp * 1000) # 获取当前时间的毫秒部分 milliseconds = now.microsecond // 1000 # 合并秒和毫秒 timestamp_ms += milliseconds date_str = time.strftime("%Y_%m_%d_%H_%M_%S", time.localtime(timestamp)) path = "./wurenji/" + date_str + ".jpg" rst = cv2.imwrite(path, img) print(date_str) print("cv2.imwrite rst: " + str(rst)) # 鼠标回调函数 def cal_roi(event, x, y, flags, param): global ix, iy, drawing, roi if event == cv2.EVENT_LBUTTONDOWN: drawing = True ix, iy = x, y # elif event == cv2.EVENT_MOUSEMOVE: # if drawing: # img = param # cv2.rectangle(img, (ix, iy), (x, y), (0, 255, 0), 1) # roi = (min(ix, x), min(iy, y), abs(ix - x), abs(iy - y)) elif event == cv2.EVENT_LBUTTONUP: drawing = False roi = (min(ix, x), min(iy, y), abs(ix - x), abs(iy - y)) if roi: x = roi[0] y = roi[1] w = roi[2] h = roi[3] img = param _roi_im = img[y:y+h, x:x+w].copy() # cv2.rectangle(img, (roi[0], roi[1]), (roi[0] + roi[2], roi[1] + roi[3]), (0, 255, 0), 1) _cal_roi(_roi_im) # 主程序 img = cv2.imread('project.jpg') # 替换为你的图片路径 cv2.imshow('image', img) cv2.setMouseCallback('image', cal_roi, param=img) while True: k = cv2.waitKey(1) & 0xFF if k == 27: # ESC键退出 break cv2.destroyAllWindows() # roi变量现在包含了你勾选的ROI区域 if roi: x, y, w, h = roi # 处理ROI区域 # roi_img = img[y:y+h, x:x+w] # cv2.imshow('ROI', roi_img) # cv2.waitKey(0) # cv2.destroyAllWindows()