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

深圳h5网站建设深圳宝安区地图

深圳h5网站建设,深圳宝安区地图,网站做第三方登录,网站秒收录引言 映射是个数学术语#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://wiki.neutronadmin.com/news/154714/

相关文章:

  • 宿迁哪里有做网站开发的网站成本案例
  • 做网站都需要准备什么软件社交网站开发
  • 建站吗官方网站html 网站添加悬浮二维码
  • 网站虚拟主机里的内容强制删除正规排名网站推广公司
  • 安徽城乡建设厅官网站wordpress网址插件
  • 学php网站开发多钱免费中文wordpress主题下载
  • 北京网站制作培训班如何用魔方网表做门户网站
  • 海南网站建设网站开发网站开发广东
  • 个人怎么建设图书网站网站开发成本预算价目表
  • 作弊网站河南企业网站排名优化价格
  • 怎么做网站平台教程网页布局类型
  • 农业大学网站建设特点做网站用哪些语言
  • 樟木头镇仿做网站合肥seo排名公司
  • 目前网站开发应用到的技术有什么wordpress 编辑器字号
  • 网站开发框架 c西安网站制作开发公司哪家好
  • 单屏网站设计黑白高端大气网站设计工作室织梦dedecms模板
  • 没有网站如何做adsense推广产品网站建设
  • 中卫网站制作公司网站 切图
  • 做网站切图是什么意思百度站点提交工具
  • 做好政务公开和网站建设wordpress+重装教程
  • 中国建设银行官网站保本理财拍摄公司形象宣传片
  • 建站公司兴田德润好不好深圳小程序推广
  • design设计网站长春市招标网
  • 全景图制作平台网站建设商城分销模式
  • 网站建设的项目体会合肥卫来
  • wordpress 页面idseo技术培训
  • 衡东建设局网站接工程的app软件
  • php用户管理系统源码现在网站优化怎么做
  • 天津网站建站模板网站建设与管理就业前景
  • 商业网站是怎么做的怎么找做网站的