Самый простой способ повернуть изображение на 90 градусов с помощью OpenCV?

Не знаете, почему SSMS не учитывает порядок выполнения, но это просто не так. Это не проблема для небольших баз данных, но что, если ваша база данных имеет 200 объектов? В этом случае порядок выполнения имеет значение, потому что все это нелегко.

Для неупорядоченных скриптов, сгенерированных SSMS, вы можете перейти к

a) Выполнить скрипт (некоторые объекты будут вставлены в некоторые из них, будут некоторые ошибки)

b) Удалите все объекты из сценария, добавленного в базу данных

c) Вернитесь к a), пока все

Альтернативный вариант - использовать сторонний инструмент, такой как ApexSQL Script или любые другие инструменты, уже упомянутые в этом потоке (SSMS toolpack, Red Gate и другие).

Все они будут заботиться о зависимостях для вас и сэкономить вам еще больше времени.

45
задан Antonio 16 February 2016 в 12:26
поделиться

2 ответа

Если вы используете Linux, вы также можете играть с unestand :

Конвертировать пробелы в каждом FILE в вкладки, запись в стандартный вывод. Без FILE, или если FILE имеет значение -, прочитайте стандарт вход.

-121--3031442-

Я думаю, что ближе всего вы найдете Base36 , однако он не будет работать с типом GIUD (только Int16, Int32 или Int64).

-121--3255170-

Обновление для транспозиции:

Следует использовать cvTranspose () или cv:: transpose () , поскольку (как вы правильно указали) это более эффективно. Опять же, я рекомендую обновить до OpenCV2.0, поскольку большинство функций cvXXX просто преобразуют структуры IplImage * в объекты Mat (без глубоких копий). Если изображение сохранено в объекте Mat , Mat.t () возвращает транспонирование.

Любое вращение:

Вы должны использовать cvWarpAffine, определяя матрицу вращения в общей структуре матрицы преобразования. Я настоятельно рекомендую обновить класс до OpenCV2.0 , который имеет несколько функций, а также класс Mat , который инкапсулирует матрицы и изображения. С помощью 2,0 можно использовать warpAffine .

10
ответ дан 26 November 2019 в 20:09
поделиться

Я искал некоторые подробности и не нашел ни одного примера. Поэтому я публикую функцию transposeImage , которая, я надеюсь, поможет другим, кто ищет прямой способ поворота на 90 ° без потери данных:

IplImage* transposeImage(IplImage* image) {

    IplImage *rotated = cvCreateImage(cvSize(image->height,image->width),   
        IPL_DEPTH_8U,image->nChannels);
    CvPoint2D32f center;
    float center_val = (float)((image->width)-1) / 2;
    center.x = center_val;
    center.y = center_val;
    CvMat *mapMatrix = cvCreateMat( 2, 3, CV_32FC1 );        
    cv2DRotationMatrix(center, 90, 1.0, mapMatrix);
    cvWarpAffine(image, rotated, mapMatrix, 
        CV_INTER_LINEAR + CV_WARP_FILL_OUTLIERS, 
        cvScalarAll(0));      
    cvReleaseMat(&mapMatrix);

    return rotated;
}

Вопрос: Почему это?

float center_val = (float)((image->width)-1) / 2; 

Ответ: Потому что это работает :) Единственный центр, который я нашел, не переводит изображение. Хотя, если у кого-то есть объяснение, мне было бы интересно.

1
ответ дан 26 November 2019 в 20:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: