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

以绿色为主色的网站模版如何自己建个网站

以绿色为主色的网站模版,如何自己建个网站,做棋牌网站合法吗,wordpress图床推荐引言 映射是个数学术语#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/636644/

相关文章:

  • 无锡便宜做网站如何下载网站模板
  • 南宁高端网站网络小说网站推广策划方案
  • 苏州网站制作方法建设银行 网站
  • 技术网站推广范例素材网站哪个好
  • 网站找人做的他能登管理员吗网站建设一般多少钱
  • 衡水哪有做网站的wordpress主题站主题
  • 网络建设的流程网站公司注册资本
  • 杭州旅游团购网站建设建立一个网站需要哪些步骤
  • 实木餐桌椅网站建设浦东网站建设哪家好
  • 高端手机网站定制网站网络推广推广
  • 做网站的颜色大学网站群建设方案
  • 淄博学校网站建设哪家好网站集约化建设规范
  • 专业论坛网站有哪些如何制作h5页面视频
  • 南京整站优化网站备案负责人一定要法人
  • 北京正规网站建设公司php网站开发实训感想
  • 织梦网站地图怎么做腾讯网站开发语言
  • 站长之家alexa排名wordpress html 标签
  • WordPress建站主机推荐工程公司的经营范围
  • 做网站要注意哪一点网站需求分析的重要
  • 设计作品网站怎么开网站
  • 上海网站开发制作建设网站的建设费用包括
  • 上海网站建设网站开发亚洲杯篮球直播在什么网站
  • 网站做seo第一步h5制作公司
  • 软件外包产业网络优化工程师是干嘛的
  • 怎么用服务器做局域网网站河西网站建设
  • 工业企业网站建设企业门户网站解决方案
  • 网站运营与管理论文网上商城都有哪些
  • 常德网站制作建设毕设电商网站设计
  • 西安企业模板建站福州+网站建设+医疗
  • 邹城市住房和建设局网站仙居网站建设贴吧