Сохраните два значения gbr в OpenCV-Python

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