Структура колб-приложений

Я пытаюсь создать простое, но не тривиальное приложение с помощью Flask, и я постоянно сталкиваюсь с ситуацией, которая не очень хорошо объясняется в документации.

Я бы хотел, чтобы мое приложение было разделено между разными модулями, но похоже, что трудно получить доступ к основному объекту app(или dbизflask-sqlalchemy)из любого другого места, кроме основного модуля. Похоже, вам действительно нужно написать свой собственный способ обращения с ним как с глобальным, к которому все имеют доступ, что требует некоторого сомнительного кода и немного времени.

Как app, так и dbсоздаются на уровне, где создается экземпляр основного приложения, и в каждом примере предполагается, что они доступны на верхнем уровне. Но если я разделю разные обработчики URL на разные модули, я потеряю возможность использовать декоратор @app.route. Я могу обойти это с помощью app.add_url_rule('/...', some.module...), но опять же, приложение не передается этой функции.

То же самое происходит сdb-Я не знаю, следует ли мне вставить его в gили как-то сделать его доступным через app. Это не помогает мне перемещать модели в отдельный модуль, хотя -, как мне получить доступ к dbпри их импорте? Во всех примерах снова предполагается, что он доступен только как локальная переменная.

Я упускаю что-то очевидное, или я пытаюсь использовать flask для неправильной задачи?

-121 ---769500 ​​- Быстрые 2D-преобразования твердого тела в numpy/scipy Я хочу применить преобразования твердого тела к большому набору матриц 2D-изображений. В идеале я хотел бы иметь возможность просто предоставить матрицу аффинного преобразования, определяющую как перемещение, так и вращение,...

Я хочу применить преобразования твердого тела к большому набору матриц 2D-изображений. Идеально,Я хотел бы иметь возможность просто предоставить матрицу аффинного преобразования, указывающую как перевод, так и вращение, применить это за один раз, а затем выполнить интерполяцию кубического сплайна на выходе.

К сожалению, кажется, что affine_transformв scipy.ndimage.interpolationне выполняет перевод. Я знаю, что мог бы использовать комбинацию shiftи rotate, но это довольно беспорядочно и требует многократной интерполяции вывода.

Я также пытался использовать общий geometric_transformationвот так:

import numpy as np
from scipy.ndimage.interpolation import geometric_transformation

# make the affine matrix
def maketmat(xshift,yshift,rotation,dimin=(0,0)):

    # centre on the origin
    in2orig = np.identity(3)
    in2orig[:2,2] = -dimin[0]/2.,-dimin[1]/2.

    # rotate about the origin
    theta = np.deg2rad(rotation)
    rotmat = np.identity(3)
    rotmat[:2,:2] = [np.cos(theta),np.sin(theta)],[-np.sin(theta),np.cos(theta)]

    # translate to new position
    orig2out = np.identity(3)
    orig2out[:2,2] = xshift,yshift

    # the final affine matrix is just the product
    tmat = np.dot(orig2out,np.dot(rotmat,in2orig))

# function that maps output space to input space
def out2in(outcoords,affinemat):
    outcoords = np.asarray(outcoords)
    outcoords = np.concatenate((outcoords,(1.,)))
    incoords = np.dot(affinemat,outcoords)
    incoords = tuple(incoords[0:2])
    return incoords

def rbtransform(source,xshift,yshift,rotation,outdims):

    # source --> target
    forward = maketmat(xshift,yshift,rotation,source.shape)

    # target --> source
    backward = np.linalg.inv(forward)

    # now we can use geometric_transform to do the interpolation etc.
    tformed = geometric_transform(source,out2in,output_shape=outdims,extra_arguments=(backward,))

    return tformed

Это работает, но ужасно медленно, так как по существу зацикливается на пиксельных координатах! Как это сделать?

5
задан ali_m 13 July 2012 в 01:04
поделиться