2

これら 2 つの ROI を 2 つの画像としてトリミングしたいと思います。

ここに画像の説明を入力

これら 2 つの ROI をスクリプトで同期的にトリミングすることを考えています。DRG Mitchell による ROI からの画像の作成に関するコードを見つけました。だから私はこれを書いた:

image front := GetFrontImage()
imagedisplay imgdisp = front.ImageGetImageDisplay(0)
number roinum = imgdisp.ImageDisplayCountRois()
number x

for (x=0; x<roinum; x++)
{
roidisp = ImageDisplayGetROI(imgdisp,x)
image crop = front []
ShowImage(crop)
}

しかし、実際には 1 つの ROI に対してのみ機能します。複数の ROI のクロッピングを処理する方法についての手がかりを教えていただければ幸いです。ありがとう!

4

1 に答える 1

2

この例は次のことに役立ちます。

// ROIs are objects of the image display, so get that one first
Image input := GetFrontImage()
ImageDisplay disp = input.ImageGetImageDisplay(0)

// Iterate over all ROIs found on the display
number nRoi = disp.ImageDisplayCountROIs()
for (number i=0; i<nRoi; i++ )
{
    ROI myRoi = disp.ImageDisplayGetROI( i )

    // Test if the ROI has the properties you want
    if ( !myROI.ROIIsRectangle() )  continue
    if ( !myROI.ROIGetVolatile() )  continue

    // Read the ROI region and use that to copy the data
    number t, l, b, r 
    myROI.ROIGetRectangle( t, l, b, r )

    // Use slice2 to address the area and ImageClone to get a clone
    // inclusing tags, calibration etc.
    image cut := input.Slice2(t,l,0, 0,(r-l),1, 1,(b-t),1 ).ImageClone()
    cut.ShowImage()

    // Optionally set some names
    cut.SetName( input.GetName()+" #"+(i+1) )

    // Optionally modify the roi
    myRoi.ROISetVolatile( 0 )
    myRoi.ROISetMoveable( 0 )
    myRoi.ROISetLabel( "cut #"+(i+1) )
}
于 2016-07-14T06:35:52.273 に答える