Аннотации в DigitalMicrograph через Python - PullRequest
2 голосов
/ 17 апреля 2020

Кто-нибудь имел успех при получении строчных (или любых других) аннотаций для отображения с использованием Python в DM? Мой код:

img = DM.CreateImage(...)
img_disp = img.CreateImageDisplay(1)
img_disp.AddNewComponent(2, 512, 0, 512, 1000)
img.ShowImage()
del imgk

Теоретически, это должно нарисовать горизонтальную линейную аннотацию, но я ничего не вижу на своих изображениях, даже если я могу найти дочерний компонент типа «линейная аннотация» на изображении компонент дисплея. В Python есть также функция NewLineAnnotation(), но я не могу найти такую ​​функцию, как ComponentAddChildAtEnd(), которая существует в языке сценариев DM.

1 Ответ

1 голос
/ 17 апреля 2020

Ваша проблема в том, что ShowImage() создает новый экран, который не совпадает с вашим img_disp.

У вас есть два способа решения этой проблемы:

  • Либо Вы создаете imageDocument, а затем добавляете в него созданный imageDisplay.

  • Или вы сначала используйте ShowImage, а затем получите изображение.

Я бы порекомендовал 2-е решение, если по какой-то причине вы не хотите отображать изображение в первое место. Таким образом, код будет:

# This is a PYTHON script to be run in DigitalMicrograph
import numpy as np
img = DM.CreateImage( np.arange(120000).reshape(300, 400).copy() )
img.ShowImage()
img.GetImageDisplay(0).AddNewComponent(2, 150, 100, 150, 300)
del img

Эквивалентный DM-скрипт будет:

// This is a DM-script to be run in DigitalMicrograph
image img := IntegerImage("Test",4,0,400,300) = irow
img.ShowImage()
img.ImageGetImageDisplay(0).ComponentAddNewComponent(2,150,100,150,300)
...