当前位置: 首页 > news >正文

档案网站建设思考网站是做百度快照推广好

档案网站建设思考,网站是做百度快照推广好,互站网,网站被k什么意思引言 映射是个数学术语#xff0c;指两个元素的集之间元素相互“对应”的关系#xff0c;为名词。映射#xff0c;或者射影#xff0c;在数学及相关的领域经常等同于函数。 基于此#xff0c;部分映射就相当于部分函数#xff0c;而完全映射相当于完全函数。 说的简单点…引言 映射是个数学术语指两个元素的集之间元素相互“对应”的关系为名词。映射或者射影在数学及相关的领域经常等同于函数。 基于此部分映射就相当于部分函数而完全映射相当于完全函数。 说的简单点每个人都有一个名字都有身份证号人对应人名字对应自己的身份证号这种对应关系就叫映射。 一、什么是像素重映射 把一个图像中一个位置的像素放置到另一个图片指定位置的过程就是像素重映射。 为了完成映射过程, 有必要获得一些插值为非整数像素坐标,因为源图像与目标图像的像素坐标不是一一对应的. 简单的说就是改变图片的位置左右上下颠倒 for example 举个栗子g(x, y)f(h(x,y))。 这里g()是目标图像f()是原图像h(x,y)是作用于(x,y)的映射方法函数。假设有一幅图像I满足后面条件作重映射 h(x,y)(I.cols - x,y)这个公式是有点绕哈有些对数学不感冒的童鞋可以看一下这个图 没错就是轴对称左右翻转。 这就是数学的魅力。我们一起来体验一下。 二、像素重映射API — remap 下面是函数原型 cv::remap  (              InputArray  src,           OutputArray  dst,           InputArray  map1,           InputArray  map2,           int    interpolation,           int    borderMode BORDER_CONSTANT,           const Scalar    borderValue Scalar() ) 函数各个参数的解释 第一个参数InputArray类型的src输入图像即源图像填Mat类的对象即可且需为单通道8位或者浮点型图像。 第二个参数OutputArray类型的dst函数调用后的运算结果存在这里即这个参数用于存放函数调用后的输出结果需和源图片有一样的尺寸和类型 第三个参数InputArray类型的map1它有两种可能的表示对象。表示点xy的第一个映射。表示CV_16SC2 , CV_32FC1 或CV_32FC2类型的X值。 第四个参数InputArray类型的map2同样它也有两种可能的表示对象而且他是根据map1来确定表示那种对象。若map1表示点xy时。这个参数不代表任何值。表示CV_16UC1 , CV_32FC1类型的Y值第二个值。 第五个参数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。   三、实战 参数函数 首先我们要先考虑我们要做的情况有如下四种缩小行与列均为原来的1/2左右翻转上下翻转中心旋转。下面的图表示的就是四种变换模式 最简单的是翻转了行不变第一列跟最后一列转换第二列跟倒数第二列转换……这样就实现了左右翻转。同理列不变行转换实现上下翻转。如果上下左右都翻转那就是旋转180°也就是中心旋转啦。 还有一个就是图像缩小图像缩小就是将长跟宽变换为原来的1/2。所以只在图像的1/4处到3/4处有新图像。将图像范围控制在0原图像的0.25-0.75之间其他的全部为0设置图像的x和y方向的映射。对于x方向是列的映射。图像的每个像素点减去原图像的1/4再×2就表示图像缩小1/2.不过经过我自己的实践发现图像宽高缩小一半不能再后面0.5应该是列不加行-0.25。   void updata_map() {for (int row 0; row img.rows; row){for (int col 0; col img.cols; col){switch (index){//index 0 图像的行跟列为为原来的1/2。//index 1为左右翻转列变换行不变//index 2为上下翻转行变换列不变//index 3为中心旋转case 0:if (col (img.cols*0.25) col(img.cols*0.75) row(img.rows*0.25) row (img.rows*0.75)) {map_x.atfloat(row, col) 2 * (col - (img.cols*0.25));map_y.atfloat(row, col) 2 * (row - (img.rows*0.25) - 0.25);}else{map_x.atfloat(row, col) 0;map_y.atfloat(row, col) 0;}break;case 1:map_x.atfloat(row, col) (img.cols - col - 1);map_y.atfloat(row, col) row;break;case 2:map_x.atfloat(row, col) col;map_y.atfloat(row, col) (img.rows - row - 1);break;case 3:map_x.atfloat(row, col) (img.cols - col - 1);map_y.atfloat(row, col) (img.rows - row - 1);break;default:break;}} }效果如下图所示 x和y都加上0.5 x和y都不加0.5  x不加y-0.25 完整代码 #define INPUT_TITLE input image #define OUTPUT_TITLE remap image#includeiostream #includeopencv2\opencv.hppusing namespace std; using namespace cv;Mat img, src;//img 输入图像 ; src 最终输出的图像 Mat map_x, map_y; int index 0; void updata_map();int main() {img imread(D:/测试程序/image/circle1.bmp);if (!img.data){cout ERROR : could not load image.;return -1;}namedWindow(INPUT_TITLE, CV_WINDOW_AUTOSIZE);namedWindow(OUTPUT_TITLE, CV_WINDOW_AUTOSIZE);imshow(INPUT_TITLE, img);//建立映射表map_x.create(img.size(), CV_32FC1);map_y.create(img.size(), CV_32FC1);int c 0;while (true){c waitKey(500);index c % 4;if ((char)c 27){break;}updata_map();remap(img, src, map_x, map_y, INTER_LINEAR, BORDER_CONSTANT, Scalar(0, 0, 255));imshow(OUTPUT_TITLE, src);}return 0; }void updata_map() {for (int row 0; row img.rows; row){for (int col 0; col img.cols; col){switch (index){//index 0 图像的行跟列为为原来的1/2。//index 1为左右翻转列变换行不变//index 2为上下翻转行变换列不变//index 3为中心旋转case 0:if (col (img.cols*0.25) col(img.cols*0.75) row(img.rows*0.25) row (img.rows*0.75)) {map_x.atfloat(row, col) 2 * (col - (img.cols*0.25));map_y.atfloat(row, col) 2 * (row - (img.rows*0.25)-0.25);}else{map_x.atfloat(row, col) 0;map_y.atfloat(row, col) 0;}break;case 1:map_x.atfloat(row, col) (img.cols - col - 1);map_y.atfloat(row, col) row;break;case 2:map_x.atfloat(row, col) col;map_y.atfloat(row, col) (img.rows - row - 1);break;case 3:map_x.atfloat(row, col) (img.cols - col - 1);map_y.atfloat(row, col) (img.rows - row - 1);break;default:break;}}} }效果图
http://www.w-s-a.com/news/768262/

相关文章:

  • 礼品工艺品网站建设手机做网站哪家好
  • 泉州网站建设方案维护怎样选择网站建设
  • 江苏建站速度忿先进的网站建设
  • 广州天河建站公司com域名注册多少钱
  • 成都网站建设推广好vs2013如何做网站
  • 茶叶网站建设模板企业网站备案要多少钱
  • 怎么查网站找谁做的win主机伪静态规则 wordpress
  • 轻云服务器菁英版 多个网站北京it外包服务商
  • 售后服务 网站建设阳江seo优化
  • 网站建设后怎么赚钱wordpress调用导航栏
  • 特产网站设计六色网站
  • 服务器网站备案做网站公司如何赚钱
  • 怎样进行站点优化荣成市有做网站的吗
  • 合肥建设工会网站芜湖做网站建设公司
  • 玉林市住房和城乡建设局网站网站开发百灵鸟
  • 网站怎么做双机房切换建设部网站2015年第158号
  • 郑州服务设计公司网站色块的网站
  • 网站设计所用到的技术做网站添加mp3
  • 凡科做的微网站怎样连接公众号seo李守洪排名大师
  • 温州网站开发网站的制作东莞寮步伟易达电子厂
  • 北京网站设计制作关键词优化微信小程序开发推广网站建设优化规划书
  • 杭州临平网站建设开发公司将购房款划给总公司的法律责任
  • 广东外贸网站推广分类wordpress
  • 聚美优品网站建设方案商城和营销型网站建设
  • 比较著名的seo网站如何建设网站?
  • 如何做商业网站最火wordpress主题
  • 建设网站需要哪些软硬件条件wordpress文章页标题优化
  • 网站建设功能需求文档wordpress 1g1核1m
  • 学做窗帘要下载哪个网站用户反馈数据分析软件园
  • 宁晋网站建设多少钱产品宣传推广方式有哪些