盗版拼接

之所以这么叫,是因为他根本用不上拼接的任何知识点。说起来就是一个图像的对接,或者搭上,整齐的搭在一起,不过感觉的确是有它的存在意义。比如我能想到的如果用在显微镜下的话,每次摄像机移动的步长是确定的,那么只需要把照片都按照位置整齐的排好显示出来就行了。如果有重叠的部分,只需要覆盖显示,利用step的话应该能轻松搞定,然后看一下是单通道还是三通道。总之这个是绝对可以实现的,因为这个怎么说,摄像机的移动是定步长的,也就是说除了视点以外其他的点都没有改变。

在名义上,这绝对是图像拼接,而事实上根本不需要使用特征点查找与图像融合技术。所以这么个名字应该是实至名归。

算法:

先截图得到两个可以搭上的图片。

进入vs环境。

先获取到两个图片,imread。

然后创建一个新的矩阵。

然后写一个拼接函数。出来调用。

myPicAdd(const * cvmat src1,const * cvmat src2,cvmat &dest){//假设两张图片是平行的。
//如果不匹配的话,打印提示信息,return -1;
    for(int i=0;i<src1.height;i++){
        for(int j=0;j<dest.width;j++){
            if(j<src1.width)
                dest[j]=src1[j];
            else
                dest[j]=src2[j-src1.width];
        }
    }
}        

主函数一调用是不是就解决问题了。

想的挺好的。

实现起来还是有点儿困难的。首先是读取图像,接下来参数传递,实现拼接,然后就发现,每次只是出一行,或者不出结果。然后发现有些很基础的算法要实现。比如要是能实现一张图片的复制,在把另外一张图片加进来是不是就很容易。发现连这个都很难做到。主要是对cvmat mat iplimage cvarr很陌生,每个里面什么参数都不晓得,然后是关于 指针引用,参数传递不是很熟。

现在把可行版发布:

先是:图像复制,自己写的图像复制,如果这个写出来了,那么后面实现opencv里面的函数也就轻而易举了。

我的图像复制

可运行版本:

void myClone(IplImage* src1, IplImage* dest){for (int i = 0; i< src1->height; i++){
        for (int j = 0; j<dest->width*3; j++){
            dest->imageData[dest->widthStep *i + j] = src1->imageData[src1->widthStep *i + j];
        }
    }
}

算法里面这样写:

dest.data[j] = src1.data[j];

都知道里面存的是矩阵,如果是一个一维矩阵的数字罗列这样就很简单。

事实上并不是,这样写就只能复制头一行。

改进第一版本:

for (int i = 0; i< src1->height; i++){
        for (int j = 0; j<dest->width*3; j++){
            printf("%d", src1->imageData[j]);
            dest->imageData[i+j] = src1->imageData[i+j];
        }    }

想想会怎样?理论上应该是没问题的,但是其实,结果是我的每次都只复制了一行半的内容。后面198行半都是灰的。【为了运行方便我从我的屏幕上截取了154*200的图片。】

这个很奇怪。

原因在于第一行的首地址的确是dest->imageData[i+j] 可是第二行不是。

如果能想到这里

for (int j = 0; j<dest->width * 3; j++){
        printf("%d", src1->imageData[j]);
        dest->imageData[j] = src1->imageData[src1->widthStep * 50+j];
    }

我单独打印了某一行,结果是对的。

然后正式版本就出现了。

但是这样做好像跟,人家的函数有区别现在可以是这些一个跟人家一毛一样的,图像复制函数,之所以这样是因为,简单搜了一下,并没有找到,怎么自己写图像图像复制函数,虽然知道他真的不太难。但是毕竟如果将来要自己操作的话,这些东西自己弄出来就显得尤为必要。比如实现我的盗版拼接。

没时间了,先这样吧

时间: 2024-10-05 23:01:45

盗版拼接的相关文章

Sql Server将一列字段拼接成字符串方法

最近在项目中遇到个问题,需要将表中某列字段合并成字符串输出,如果直接通过代码全部读取出来,再遍历进行拼接显然不是最好的方法,所以想着能否在数据读取的时候直接拼接好返回,网上搜了可通过for xml来实现. 首先,准备好需要的数据,脚本如下: if exists (select * from sysObjects where id=object_id('Student')) drop table Student go create table Student ( Id int, Name varc

拼接字符串;字符反转;统计大串中小串出现的次数

package Homework; import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.Scanner;/** * 把数组中的数据按照指定个格式拼接成一个字符串举例:int[] arr = {1,2,3}; 输出结果:[1, 2, 3] 字符串反转举例:键盘录入"abc" 输出结果:"cba" 统计大串中小串出现的次数举例:在字符串&q

谷歌地图下载拼接软件

选择多边形框选下载 特别BIGEMAP地图下载器提供了多种选择的下载方式,方便用户得到不同的应用当中: 1.矩形框选择区域下载 2.多边形选择区域下载 3.根据行政区(省市县区)域边界选择下载 4.导入外部边界文件下载(支持kml/kmz/shp格式) 5.标准分幅下载 6.指定矩形框经纬度范围下载 本文主要介绍应用多边形如何下载想要的区域 第一步:选在多边形工具 打开BIGEMAP软件,在软件的最上面工具栏选择[],单机左键选择. 第二步:通过单击[鼠标左键]在地图上任意位置开始绘制多边形,选

java字符串拼接技巧(StringBuilder使用技巧)

在平时的开发中,我们可能会遇到需要拼接如下格式的字符串(至少我是遇到了很多次): 1,2,3,4,5,6,7,8,9,10,11,12,12,12,12,34,234,2134,1234,1324,1234,123 这个字符串的特点:多个数据之间通过某一个特殊符号分割. 以前我都是这样想的,我相信很多的people也是这样想的: public class StringTest { public static void main(String[] args) { StringBuilder sb

(一一一)图文混排基础 -利用正则分割和拼接属性字符串

很多时候需要用到图文混排,例如聊天气泡中的表情,空间.微博中的表情,例如下图: 红心和文字在一起. 比较复杂的情况是表情夹杂在文字之间. 要实现这种功能,首先要介绍iOS中用于显示属性文字的类. 用于文字显示的类除了text属性之外,还有attributedText属性,这个属性是NSAttributedString类型,通过这个属性可以实现不同文字的不同字体.颜色甚至把图片作为文字显示的功能. 下面介绍这个字符串的使用. 以一条微博内容为应用场景,介绍如何从中找出表情.话题等内容,其中表情替换

38、EST序列拼接流程

转载:http://fhqdddddd.blog.163.com/blog/static/18699154201241014835362/ http://blog.sina.com.cn/s/blog_4476400f0100iq0x.html EST----对EST序列进行冗余查找,利用CD_HIT软件聚类,快速批量去除冗余序列 est-trimer(去掉帽子和尾巴,去掉太短而不可信的) RepeatMaster(去掉转座子等重复) seqclean(去除载体,线粒体叶绿体等序列) CAP3(

Java 文件拼接器

1. 功能描述: 实现指定目录下相同类型的文件拼接成一个文件, 拼接效果如代码所示. 涉及内容: 反射, io, 递归 1.1 xml 的拼接: <!-- \pom.xml --> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http:

【Unity】UGUI系列教程——拼接一个简单界面

0.简介: 在目前的游戏市场上,手游依然是市场上的主力军,而只有快速上线,玩法系统完善的游戏才能在国内市场中占据份额.而在手游开发过程中,搭建UI系统是非常基本且重要的技能,极端的说如果对Unity的UI系统熟悉,就可以去游戏公司上班了 :)(笑~). 但是就像蛋炒饭,最简单的事要做好也是非常困难的.UI这块的变动也经常是整个游戏最频繁的一块,如果没有一个合理的设计思路,和管理方案,后期将会陷入无止境的调试优化之中. 万丈高楼平地起,现在让我们开始从Unity中的UGUI系统进行讲解. 1.创建

Python实现好友全头像的拼接

微信好友全头像 话不多说,直接上代码 import itchat import math import PIL.Image as Image import os itchat.auto_login() friends = itchat.get_friends(update=True)[0:] user = friends[0]["UserName"] num = 0 for i in friends: img = itchat.get_head_img(userName=i["