Я пытался использовать 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;
}
изменить вниз на:
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);
Других решений пока нет …