C++ 双线性插值缩放图像
2017-09-08 16:40
155 查看
缩放灰度图
cv::Mat bilinear(cv::Mat src, int row, int col){ int rows = src.rows, cols = src.cols; cv::Mat dst(row, col, src.type()); for(int i = 0; i < row; ++i) { //以ptr的方式访问dst的数据 uchar *p = dst.ptr<uchar>(i); //使两个图像的几何中心重合,采样更合理 float x = (i+0.5)*rows/row-0.5; int fx = (int)x; //x为坐标的小数部分 x -= fx; //以整数计算速度更快 short x1 = (1.f-x)*2048; short x2 = 2048 - x1; for(int j = 0; j < col; ++j) { //trick float y = (j+0.5)*cols/col-0.5; int fy = (int)y; y -= fy; //trick short y1 = (1.f-y)*2048; short y2 = 2048 - y1; //结果右移22位抵消2048的平方 p[j] = (src.at<uchar>(fx,fy)*x1*y1 + src.at<uchar>(fx+1,fy)*x2*y1 +src.at<uchar>(fx,fy+1)*x1*y2 + src.at<uchar>(fx+1,fy+1)*x2*y2) >> 22; } } return dst;
相关文章推荐
- opencl:C++实现双线性插值图像缩放
- C++ 双线性插值缩放图像
- [转]opencv3 图像处理 之 图像缩放( python与c++实现 )
- 基于YUV422的图像缩放 (双线性插值)
- 图像缩放算法及速度优化之双线性插值
- 图像缩放--OpenCV cvResize函数--最近邻插值---双线性插值--基本原理
- 使用ffmpeg进行图像格式转换以及图像缩放/sws_scale/linux/c++/c/rgb-yuv420
- C++图像缩放
- 实现基于最近邻内插和双线性内插的图像缩放C++实现
- 图像缩放算法及速度优化 ---- 双线性插值
- 使用ffmpeg进行图像格式转换以及图像缩放/sws_scale/linux/c++/c/rgb-yuv420
- 数字图像缩放算法--双线性插值
- 图像缩放--OpenCV cvResize函数--最近邻插值---双线性插值--基本原理
- 图像缩放算法:双线性插值和2次立方
- 使用ffmpeg进行图像格式转换以及图像缩放/sws_scale/linux/c++/c/rgb-yuv420
- 图像缩放算法及速度优化——(二)双线性插值
- 【数字图像处理】<纯C++>读取、裁剪、缩放、旋转和存储8位bmp灰度图像
- c++图像缩放
- C/C++ BMP(24位真彩色)图像处理(3)------图像の放大缩小(双线性插值)
- 双线性插值(Bilinear interpolation)的图像旋转在mobile上面的C++实现