1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > C++ 双线性插值缩放图像

C++ 双线性插值缩放图像

时间:2022-11-01 10:39:53

相关推荐

C++ 双线性插值缩放图像

缩放灰度图

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) {//trickfloat y = (j+0.5)*cols/col-0.5;int fy = (int)y;y -= fy;//trickshort 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;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。