#python #function #numpy #opencv
Вопрос:
В коде все работает правильно, но я хочу, чтобы код сохранял два значения, а затем заканчивался. Как я могу это сделать?
import cv2
import numpy as np
def mouse(event,x,y,flags,param):
if event == cv2.EVENT_LBUTTONDOWN:
colorsb = image[y,x,0]
colorsg = image[y,x,1]
colorsr = image[y,x,2]
colors = image[y,x]
print("Red: ",colorsr)
print("Green: ",colorsg)
print("Blue: ",colorsb)
print("BRG : ",colors)
print("Coordinates of pixel: X: ",x,"Y: ",y)
image = cv2.imread("x.jpg")
cv2.namedWindow("Image")
cv2.setMouseCallback("Image", mouse)
while(1):
cv2.imshow("Image",image)
if cv2.waitKey(1) amp; 0xFF == 27:
break
cv2.destroyAllWindows()
Ответ №1:
Вы могли бы сделать что-то вроде этого:
#!/usr/bin/env python3
import cv2
import numpy as np
def mouse(event,x,y,flags,param):
# Ensure we change global "done" rather than a local copy
global done
if event == cv2.EVENT_LBUTTONDOWN:
colorsb = image[y,x,0]
colorsg = image[y,x,1]
colorsr = image[y,x,2]
colors = image[y,x]
print("Red: ",colorsr)
print("Green: ",colorsg)
print("Blue: ",colorsb)
print("BRG : ",colors)
print("Coordinates of pixel: X: ",x,"Y: ",y)
# Write results to file
with open('result.txt', 'w') as f:
f.write(f'Coords: [{x},{y}], BRG: {colors}')
# Signal main loop to exit
done = True
image = cv2.imread("MNFnp.jpg")
cv2.namedWindow("Image")
cv2.setMouseCallback("Image", mouse)
done = False
while not done:
cv2.imshow("Image",image)
if cv2.waitKey(1) amp; 0xFF == 27:
break
cv2.destroyAllWindows()