Мне нужно сохранить координаты изображения в текстовом файле, нажав на мышь - PullRequest
0 голосов
/ 14 января 2019

что случилось, ребята. Я очень новичок в программировании. Итак, мне нужно создать код, который я нажимаю на изображение, и это соответствует его координате. Мне нужно сделать это в Python + OpenCV. Я уже что-то сделал, но это не сохраняет его координаты. Прежде всего, откройте изображение. Во-вторых, нажмите на пиксель. В-третьих, сохраните информацию о пикселях (столбец, строка) в текстовом файле.

import matplotlib.pyplot as plt
import numpy as np
import cv2

def callback(event):
    print ('event.x, event.y')

fig, ax = plt.subplots()

fig.canvas.callbacks.connect('button_press_event', callback)
def callback(event):
    print ('event.xdata, event.ydata')




img = cv2.imread('/home/dgt/Pictures/1.jpeg',-1)
plt.imshow(img, cmap='gray', interpolation='bicubic')



plt.show()
cv2.waitKey(0)
cv2.destroyAllWindows()

1 Ответ

0 голосов
/ 14 января 2019

С помощью этого скрипта вы можете щелкнуть изображение и сохранить места щелчков в электронной таблице:

import cv2, numpy as np

# Path to source video:
output_path = '/home/stephen/Desktop/clicks.csv'

# Mouse callback function
global click_list
positions, click_list = [], []
def callback(event, x, y, flags, param):
    if event == 1: click_list.append((x,y))
cv2.namedWindow('img')
cv2.setMouseCallback('img', callback)

img = cv2.imread('/home/stephen/Desktop/test214.png')

# Mainloop - show the image and collect the data
while True:
    cv2.imshow('img', img)    
    # Wait, and allow the user to quit with the 'esc' key
    k = cv2.waitKey(1)
    # If user presses 'esc' break 
    if k == 27: break        
cv2.destroyAllWindows()

# Write data to a spreadsheet
import csv
with open(output_path, 'w') as csvfile:
    fieldnames = ['x_position', 'y_position']
    writer = csv.DictWriter(csvfile, fieldnames = fieldnames)
    writer.writeheader()
    for position in click_list:
        x, y = position[0], position[1]
        writer.writerow({'x_position': x, 'y_position': y})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...