码迷,mamicode.com
首页 > 其他好文 > 详细

最近邻算法的图像缩放代码

时间:2014-07-29 13:04:07      阅读:277      评论:0      收藏:0      [点我收藏+]

标签:blog   for   2014   代码   ar   算法   new   size   

原理挺简单,不啰嗦,直接上代码了

void ImgResize(uchar* pSrcImg, uchar* pDstImg, int srcW, int srcH, int dstW, int dstH)
{
	double rateH = (double)srcH /(double) dstH;
	double rateW = (double)srcW / (double)dstW;

	for (int i=0; i<dstH; i++)
	{
		int tSrcH = (int)(rateH*double(i) + 0.5);
		for (int j=0; j<dstW; j++)
		{
			int tSrcW = (int)(rateW * double(j) + 0.5); 
			pDstImg[i*dstW+j] = pSrcImg[tSrcH*srcW+tSrcW];
		}
	}
}

void ImgResizeTest()
{
	cv::Mat srcImg = cv::imread("test.jpg", CV_LOAD_IMAGE_GRAYSCALE);
	if (srcImg.empty())
	{
		printf("srcImg load error \n");
		system("pause");
		exit(-1);
	}

	int srcW = srcImg.cols;
	int srcH = srcImg.rows;
	int dstW1 = 2*srcW + 5;
	int dstH1 = 2*srcH + 5;//随便设定
	int dstW2 = srcW/2 + 3;
	int dstH2 = srcH/2 + 3;

	uchar* pDstImg1 = new uchar[dstW1*dstH1];
	uchar* pDstImg2 = new uchar[dstW2*dstH2];

	ImgResize(srcImg.data, pDstImg1, srcW, srcH, dstW1, dstH1);
	ImgResize(srcImg.data, pDstImg2, srcW, srcH, dstW2, dstH2);

	cv::Mat dstImg1;
	dstImg1.create(dstH1,dstW1,CV_8UC1);
	memcpy(dstImg1.data, pDstImg1, dstW1*dstH1*sizeof(uchar));

	cv::Mat dstImg2;
	dstImg2.create(dstH2,dstW2,CV_8UC1);
	memcpy(dstImg2.data, pDstImg2, dstW2*dstH2*sizeof(uchar));

	cv::imshow("srcImg", srcImg);
	cv::imshow("dstImg1", dstImg1);
	cv::imshow("dstImg2", dstImg2);
	cv::waitKey(0);

	delete[] pDstImg1;
}


最近邻算法的图像缩放代码,布布扣,bubuko.com

最近邻算法的图像缩放代码

标签:blog   for   2014   代码   ar   算法   new   size   

原文地址:http://blog.csdn.net/carson2005/article/details/38260501

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!