используя pyrdown через вызов функции

Я пытался использовать pyrDown() чтобы уменьшить необходимое изображение. Для этого я использовал вызов функции void downscale(Mat *p,int *scale). Я отправил ссылку на изображение в функцию. Так что после того, как функция выполнит понижающую дискретизацию изображения, мое исходное изображение будет изменено, так как я послал указатель. Изображение вызывалось в вызове функции. Но к моему удивлению без изменений в изображении в основной программе. Я не понимаю, где я ошибся. Кто-то может указать на мою ошибку?
Вот мой код

#include <opencv2/core/core.hpp>
#include<opencv2/opencv.hpp>
#include<opencv2/imgproc/imgproc.hpp>
#include<stdio.h>
#include<conio.h>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/objdetect/objdetect.hpp>
#include<opencv2/features2d/features2d.hpp>
#include<opencv2/nonfree/nonfree.hpp>

using namespace std;
using namespace cv;

void downscale(Mat *p,int scale)
{
int s=scale;

Mat ref=*p;

imshow("received",ref);
vector<int> param;
param.push_back(CV_IMWRITE_PNG_COMPRESSION) ;
param.push_back(9);

while(s){
pyrDown(ref,ref,Size(),4);
s--;
}
imshow("sending",ref);
}int main()
{
Mat ref,in,ref_out,in_out;
int s=2;
ref=imread("C:\\Users\\vamsidhar muthireddy\\Pictures\\Camera Roll\\WIN_20151003_18_47_55_Pro.jpg");

cvtColor(ref,ref,CV_BGR2GRAY);imshow("original ref",ref);
downscale(&ref,s);

imshow("scaled ref",ref);

waitKey();
return 0;
}

0

Решение

изменить вниз на:

void downscale(Mat &ref,int scale)
{
int s=scale;

imshow("received",ref);
vector<int> param;
param.push_back(CV_IMWRITE_PNG_COMPRESSION) ;
param.push_back(9);

while(s){
pyrDown(ref,ref,Size(),4);
s--;
}
imshow("sending",ref);

и назовите это как:

downscale(ref,s);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]