Как преобразовать значения пикселей изображения в значения данных графика в matplotlib?

У меня есть такой сюжет:

Как преобразовать значения пикселей изображения в значения данных графика в matplotlib?

который я рисую, используя

ax.imshow(sf, origin = 'lower', extent=[-2,2,2,4]) 
ax.scatter(xxx,yyy,s=1,marker = 'o')

но поскольку я хочу, чтобы все на этом графике обрабатывалось как изображение, я снимаю ось xy и сохраняю ее с помощью fig.savefig('*path*/img.png', bbox_inches='tight', dpi=300,pad_inches = 0):

Теперь, как только я загружаю изображение обратно для обработки sf_img = io.imread('*path*/img.png'), я обрабатываю его (я хочу обнаружить края и найти круглые формы с наиболее вероятным центром), я получаю изображение размером (1108,893,3) этого типа:

Как преобразовать значения пикселей изображения в значения данных графика в matplotlib? и, как вы можете видеть, изменился масштаб, а также изменился размер кадра (вы этого не видите, потому что он белый). Я, конечно, мог бы построить новое изображение с помощью plt.imshow(process_img, extent = [-2,2,-1,4]), НО, проблема в том, что я не могу разбросать значение этой фиолетовой точки, поскольку она принимает значение в исходной шкале ... и я хочу знать значение этой точки, которое я знаю в исходный масштаб [246,905], но не в том масштабе, который мне нужен [-2,2, -1,4]

Не могли бы вы помочь мне в решении этой проблемы? Это действительно важно, спасибо!

Обновлено:

import numpy as np
import matplotlib.pyplot as plt
from skimage import data, color, io 
from skimage.transform import hough_circle, hough_circle_peaks
from skimage.feature import canny
from skimage.draw import circle_perimeter
from skimage.util import img_as_ubyte

sf_img = io.imread('*path*/img.png')
image = color.rgb2gray(sf_img[:,:,0:3])
image = img_as_ubyte(image)
plt.imshow(image,cmap = "gray", extent = [-2,2,-1,4])
plt.show()
edges = canny(image, sigma=5, low_threshold=10, high_threshold=20)
plt.imshow(edges, extent = [-2,2,-1,4])
plt.show()

# Detect two radii
hough_radii = np.arange(880, 900, 2)
hough_res = hough_circle(edges, hough_radii,full_output=False)

# Select the most prominent 13 circles
accums, cx, cy, radii = hough_circle_peaks(hough_res, hough_radii,
                                       total_num_peaks=13, normalize = False)

# Draw them
fig, ax = plt.subplots(ncols=1, nrows=1, figsize=(10, 4))

image = color.gray2rgb(image)
for center_y, center_x, radius in zip(cy, cx, radii):
    circy, circx = circle_perimeter(center_y, center_x, radius,
                                shape=image.shape)
    image[circy, circx] = (220, 20, 20)

ax.imshow(image, cmap=plt.cm.gray) #in this way it's not in the scale I want
ax.scatter(cx[0],cy[0],c=255, marker= 'o') # cx[0] and cy[0] are the coordinate I'm looking for in the [-2,2,-1,4] scale
plt.show()

это изображение, которое я вставил: Как преобразовать значения пикселей изображения в значения данных графика в matplotlib?

Можете ли вы предоставить полный код для своего примера?

abdulsamad 08.04.2021 15:51

@abdulsamad Привет, я отредактировал вопрос, если вам все еще интересно :)

DvD_95 08.04.2021 16:40
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
23
0

Другие вопросы по теме