سؤال

أريد إجراء تغيير حجم الصورة باستخدام الاستيفاء المكعّب.ومع ذلك، تبدو الصورة الناتجة new_img تمامًا مثل الصورة الأصلية المحملة، img.أيضًا، عندما وجدت العرض والارتفاع لـ new_img، فإن لها نفس أبعاد الصورة الأصلية.اعتقدت أنه كان من المفترض أن يتم تغيير حجم الصورة الوجهة؟هذا هو الكود الخاص بي.هل يمكن لأحد أن يرى ما إذا كنت قد فعلت أي شيء بشكل غير دقيق من فضلك؟شكرا لكم مقدما.

#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;
}
هل كانت مفيدة؟

المحلول

IplImage* new_img = img; يقوم بعمل نسخة ضحلة بحيث يشير new_img و img إلى نفس البيانات

نصائح أخرى

تحتاج إلى توسيع نطاق .. لديك 2 طرق (فقط تظهر على نطاق واسع للارتفاع):

1) giveacodicetagpre.

So OpenCV أرقام النسبة تلقائيا بين Testin إلى Testin باستخدام "SZ" (مثال: "Y" عامل sz.height / testin.height)

2) giveacodicetagpre.

لذلك يستخدم OpenCV المعلمة "2.0F" كنسبة (ل "y")، ولكن هنا يجب عليك التأكد من أن الشهادة لديها ما يكفي من حجم لهذه النسبة

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top