Я хочу выполнить изменение размера изображения с использованием бикубической интерполяции. Однако мой выходной образ, new_img, выглядит точно так же, как и исходное загруженное изображение, img. Кроме того, когда я нашел ширину и высоту new_img, он имеет те же размеры, что и исходное изображение. Я думал, что изображение назначения должно быть изменено? Это мой код. Кто-нибудь посмотрит, не сделал ли я что-нибудь неточно, пожалуйста? Заранее спасибо.Бикубическая интерполяция с использованием openCV
#include "cv.h"
#include "highgui.h"
#include "iostream"
using namespace std;
int main(int argc, char* argv) {
IplImage* img = NULL;
const int maxScale = 1;
img = cvLoadImage("C:\\walk mii.jpg");
if (!img){return -1;}
for(int s = 1; s <= maxScale; s++)
{
IplImage* new_img = img;
if(s > 1) {
new_img = cvCreateImage(cvSize(img->width*s,img->height*s), img->depth, img->nChannels);
cvResize(img, new_img, CV_INTER_CUBIC);}
cvNamedWindow("original", CV_WINDOW_AUTOSIZE);
cvShowImage("original", img);
cvNamedWindow("result", CV_WINDOW_AUTOSIZE);
cvShowImage("result", new_img);
CvSize dim = cvGetSize(new_img);
cout <<" dimensions:: height:" << dim.height<<" width:"<< dim.width<< endl;
cvWaitKey(0);
cvReleaseImage(&img);
cvReleaseImage(&new_img);
cvDestroyWindow("result");
return 0;
}
}
Измененный код:
#include "cv.h"
#include "highgui.h"
#include "iostream"
using namespace std;
int main(int argc, char* argv) {
IplImage* img = NULL;
IplImage* new_img = NULL;
img = cvLoadImage("C:\\walk mii.jpg");
if (!img){
return -1;}
new_img = cvCreateImage(cvSize(img->width,img->height), img->depth, img->nChannels);
cvResize(img, new_img, CV_INTER_CUBIC);
cvNamedWindow("original", CV_WINDOW_AUTOSIZE);
cvShowImage("original", img);
cvNamedWindow("result", CV_WINDOW_AUTOSIZE);
cvShowImage("result", new_img);
CvSize dim = cvGetSize(new_img);
cout <<" dimensions:: height:" << dim.height<<" width:"<< dim.width<< endl;
cvWaitKey(0);
cvReleaseImage(&img);
cvReleaseImage(&new_img);
cvDestroyWindow("result");
return 0;
}
Было бы неплохо прочитать документацию для cvResize. Готов поспорить, это именно то, что вы хотите знать. http://opencv.itseez.com/modules/imgproc/doc/geometric_transformations.html?highlight=cvresiz#void cvResize (const CvArr * src, CvArr * dst, int интерполяция) – Sam
@vasile большое спасибо. Я понял, что должен указать размер моего выходного изображения, чтобы увидеть разницу. Сначала я этого не осознал. –