首页 > 解决方案 > 如何在 Python 中应用 intrinsicToWorld MatLab 函数?

问题描述

我正在尝试在 Python 中复制 MatLab 的 intrinsicToWorld 函数,但我找不到如何做到这一点,我已经有了内在坐标 (x, y)、坐标、图像尺寸和像素大小。这是 MatLab 中的代码:

figure, imshow(im8); title('rgb');
prompt = 'entre la coordenada ULX= ';
m = input(prompt);
prompt = 'entre el la coordenada ULY= ';
n = input(prompt);
prompt = 'entre el ancho= ';
lw = input(prompt);
prompt = 'entre el alto= ';
kw = input(prompt);
k=n+kw;
l=m+lw;

h = imrect(gca, [m n (k-n) (l-m)]);
addNewPositionCallback(h,@(p) title(mat2str(p,3)));
fcn = makeConstrainToRectFcn('imrect',get(gca,'XLim'),get(gca,'YLim'));
setPositionConstraintFcn(h,fcn);

xIntrinsic=[m l];
yIntrinsic=[k n];

[XWorldLimits, YWorldLimits] = intrinsicToWorld(R,xIntrinsic,yIntrinsic);
xlimitsa = XWorldLimits; %[m k];  %
ylimitsb = YWorldLimits;  %[l n];  %
[A5,R5] = readgeoraster('pan8.tif');
[B,RB] = mapcrop(A5,R5,xlimitsa,ylimitsb);

filename = 'panrec.tif';
geotiffwrite(filename, B, RB,'GeoKeyDirectoryTag', info.GeoTIFFTags.GeoKeyDirectoryTag);
figure, mapshow(B,RB), title('pan 8 bits recortada celda 1m');

这是我在 Python 中的代码:

def print_trim():

    im = Image.open('new_rgb.tif')
    im.show()

    coor_x = int(input('x coordinate '))
    coor_y = int(input('y coordinate  '))
    width  = int(input('trim width  '))
    height  = int(input('trim height  '))

    ax = plt.gca()
    rect = patches.Rectangle((coor_x,coor_y),
                 width  ,
                 height  ,
                 linewidth=2,
                 edgecolor='cyan',
                 fill = False)

    ax.add_patch(rect)
    plt.imshow(im)

    xIntrinsic=[coor_x , (coor_x + width  )]
    yIntrinsic=[(coor_y + height) , coor_y]
    print(xIntrinsic,yIntrinsic)
    return xIntrinsic, yIntrinsic

现在我需要获取世界坐标,有人可以帮我吗?

标签: pythonmatlab

解决方案


推荐阅读