Как изменить размер изображения до определенного размера в OpenCV?

Иногда я использую следующее обходное решение с временной строкой-заполнителем:

var variable1 = "someString";
$('#demo').load(
    "{{ url_for('addshare2', share='ADDSHARE2') }}".replace("ADDSHARE2", variable1)
);

Это не совсем правильно, и я все еще ищу лучшее решение. Но он выполняет эту работу.

29
задан Noha Kareem 17 February 2013 в 13:24
поделиться

5 ответов

Вы можете использовать cvResize . Или лучше использовать интерфейс c ++ (например, cv::Mat вместо IplImage и cv::imread вместо cvLoadImage), а затем использовать cv::resize, который обрабатывает выделение и освобождение памяти.

39
ответ дан Kuba Ober 17 February 2013 в 13:24
поделиться

Две нужные вам функции описаны здесь:

  1. imread : считывание изображения с диска.
  2. Изменение размера изображения : изменение размера до любого размера.

Короче говоря:

// Load images in the C++ format
cv::Mat img = cv::imread("something.jpg");
cv::Mat src = cv::imread("src.jpg");

// Resize src so that is has the same size as img
cv::resize(src, src, img.size());

И, пожалуйста, пожалуйста, прекратите использование старых и полностью устаревших классов IplImage *

34
ответ дан Régis B. 17 February 2013 в 13:24
поделиться

Для вашей информации, эквивалент Python:

imageBuffer = cv.LoadImage( strSrc )
nW = new X size
nH = new Y size
smallerImage = cv.CreateImage( (nH, nW), imageBuffer.depth, imageBuffer.nChannels )
cv.Resize( imageBuffer, smallerImage , interpolation=cv.CV_INTER_CUBIC )
cv.SaveImage( strDst, smallerImage )
10
ответ дан Seanny123 17 February 2013 в 13:24
поделиться

Вы можете использовать CvInvoke.Resize для Emgu.CV 3.0

например,

CvInvoke.Resize(inputImage, outputImage, new System.Drawing.Size(100, 100), 0, 0, Inter.Cubic);

Подробности здесь

0
ответ дан PinkTurtle 17 February 2013 в 13:24
поделиться

Сделайте такую ​​полезную функцию:

IplImage* img_resize(IplImage* src_img, int new_width,int new_height)
{
    IplImage* des_img;
    des_img=cvCreateImage(cvSize(new_width,new_height),src_img->depth,src_img->nChannels);
    cvResize(src_img,des_img,CV_INTER_LINEAR);
    return des_img;
} 
6
ответ дан LovaBill 17 February 2013 в 13:24
поделиться
Другие вопросы по тегам:

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