在子进程中读取一张图片,然后用鼠标在图片上画框,遇到的问题是鼠标响应函数中的位置无法返回的到子进程中
import cv2
import multiprocessing
from multiprocessing import Process, Manager
def OnMouseAction(event, x, y, flags, param):
global position1, position2
if event == cv2.EVENT_LBUTTONDOWN:
position1 = (x, y)
print("p1", position1)
elif event == cv2.EVENT_MOUSEMOVE and flags == cv2.EVENT_FLAG_LBUTTON:
position2 = (x, y)
elif event == cv2.EVENT_LBUTTONUP:
position2 = (x, y)
print("p2", position2)
def write() :
cv2.namedWindow('image')
cv2.namedWindow("ROI", cv2.WINDOW_NORMAL)
cv2.setMouseCallback('image', OnMouseAction)
frame=cv2.imread(“1.jpg”,1)
while(1):
if position1 != None and position2 != None:
ls_mat = frame.copy()
cv2.rectangle(ls_mat, position1, position2, (255, 255, 150), 2, 4)
cv2.imshow('image', ls_mat)
if position1[1] < position2[1]:
y1 = position1[1]
y2 = position2[1]
else:
y1 = position2[1]
y2 = position1[1]
if position1[0] < position2[0]:
x1 = position1[0]
x2 = position2[0]
else:
x1 = position2[0]
x2 = position1[0]
roi_lc = frame[y1:y2, x1:x2]
if roi_lc.shape[0] > 10 and roi_lc.shape[1] > 10:
cv2.imshow("ROI", roi_lc)
# if cv2.waitKey(1) & 0xFF == ord('q'):
# ksbz = 1
break
if cv2.waitKey(400) & 0xFF == ord('q'):
break
if __name__ == '__main__':
pw = Process(target=write, args=(i,))
pw.start()
不用多进程,或用多线程能用global实现鼠标的postion的共享,
请问用多进程如何实现