lidar_camera_cablition/wurenji.py
2024-12-16 12:30:52 +08:00

78 lines
2.1 KiB
Python

# -- 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()