搜索引擎优化的主要工作,seo排名优化什么意思,wordpress在国内很慢,浙江省建设网站OpenCV中使用remap实现图像的重映射。 重映射是指将图像中的某一像素值赋值到指定位置的操作#xff1a;g(x,y) f ( h(x,y) )#xff0c; 在这里#xff0c; g( ) 是目标图像, f() 是源图像, 而h(x,y) 是作用于 (x,y) 的映射方法函数。为了完成映射过程, 需要获得一些插值为… OpenCV中使用remap实现图像的重映射。 重映射是指将图像中的某一像素值赋值到指定位置的操作g(x,y) f ( h(x,y) ) 在这里 g( ) 是目标图像, f() 是源图像, 而h(x,y) 是作用于 (x,y) 的映射方法函数。为了完成映射过程, 需要获得一些插值为非整数像素的坐标,因为源图像与目标图像的像素坐标不是一一对应的。 remap函数定义
void remap(InputArray src, //输入图像OutputArraydst, //输出图像InputArray map1,//第一个映射InputArray map2, //第二个映射int interpolation, //插值方式intborderModeBORDER_CONSTANT, //边界处理方式可以通过borderValue设置值const Scalar borderValueScalar() //边界指
) 第三个参数InputArray类型的map1它有两种可能的表示对象 表示点xy的第一个映射。 表示CV_16SC2 , CV_32FC1 或CV_32FC2类型的X值。 第四个参数InputArray类型的map2同样它也有两种可能的表示对象而且他是根据map1来确定表示那种对象。 若map1表示点xy时。这个参数不代表任何值。 表示CV_16UC1 , CV_32FC1类型的Y值第二个值。 一般情况下map1和map2使用CV_16UC1 , CV_32FC1单通道类型比较直观。 第五个参数int类型的interpolation,插值方式之前的resize( )函数中有讲到需要注意resize( )函数中提到的INTER_AREA插值方式在这里是不支持的所以可选的插值方式如下 INTER_NEAREST - 最近邻插值 INTER_LINEAR – 双线性插值默认值 INTER_CUBIC – 双三次样条插值逾4×4像素邻域内的双三次插值 INTER_LANCZOS4 -Lanczos插值逾8×8像素邻域的Lanczos插值 第六个参数int类型的borderMode边界模式有默认值BORDER_CONSTANT表示目标图像中“离群点outliers”的像素值不会被此函数修改。 第七个参数const Scalar类型的borderValue当有常数边界时使用的值其有默认值Scalar( )即默认值为0
#includeopencv2/highgui/highgui.hpp
#includeopencv2/imgproc/imgproc.hpp
#include iostreamusing namespace cv;
int main( )
{Mat srcImage, dstImage; Mat map_x, map_y;srcImage imread( 1.jpg, 1 );if(!srcImage.data) { printf(读取图片错误请确定目录下是否有imread函数指定的图片存在~ \n); return false; } imshow(原始图,srcImage);dstImage.create(srcImage.size(), srcImage.type() );map_x.create(srcImage.size(), CV_32FC1 );map_y.create(srcImage.size(), CV_32FC1 );//上下颠倒for(int j 0; j srcImage.rows;j){for(int i 0; i srcImage.cols;i){map_x.atfloat(j,i) static_castfloat(srcImage.cols - i);map_y.atfloat(j,i) static_castfloat(j);}}remap(srcImage, dstImage, map_x, map_y, CV_INTER_LINEAR, BORDER_CONSTANT, Scalar(0,0,0));imshow(程序窗口, dstImage );waitKey();return 0;
}