图像拼接测试

加入图像函数

        private Image JoinImage(List<Image> imageList, JoinMode jm)
        {

            //图片列表
            if (imageList.Count <= 0)
                return null;
            if (jm == JoinMode.Horizontal)
            {
                //横向拼接
                int width = 0;
                //计算总长度
                foreach (Image i in imageList)
                {
                    width += i.Width;
                }
                //高度不变
                int height = imageList.Max(x => x.Height);
                //构造最终的图片白板
                Bitmap tableChartImage = new Bitmap(width, height);
                Graphics graph = Graphics.FromImage(tableChartImage);
                //初始化这个大图
                graph.DrawImage(tableChartImage, width, height);
                //初始化当前宽
                int currentWidth = 0;
                foreach (Image i in imageList)
                {
                    //拼图
                    graph.DrawImage(i, currentWidth, 0);
                    //拼接改图后,当前宽度
                    currentWidth += i.Width;
                }
                return tableChartImage;
            }
            else if (jm == JoinMode.Vertical)
            {
                //纵向拼接
                int height = 0;
                //计算总长度
                foreach (Image i in imageList)
                {
                    height += i.Height;
                }
                //宽度不变
                int width = imageList.Max(x => x.Width);
                //构造最终的图片白板
                Bitmap tableChartImage = new Bitmap(width, height);
                Graphics graph = Graphics.FromImage(tableChartImage);
                //初始化这个大图
                graph.DrawImage(tableChartImage, width, height);
                //初始化当前宽
                int currentHeight = 0;
                foreach (Image i in imageList)
                {
                    //拼图
                    graph.DrawImage(i, 0, currentHeight);
                    //拼接改图后,当前宽度
                    currentHeight += i.Height;
                }
                return tableChartImage;
            }
            else
            {
                return null;
            }
        }

  拼接测试(button按钮事件下)

            Bitmap Image1 = new Bitmap(Application.StartupPath + "\\未标题-2_01.bmp");
            Bitmap Image2 = new Bitmap(Application.StartupPath + "\\未标题-2_02.bmp");
            //pictureBox2.Image = Image1;
            //pictureBox3.Image = Image2;

            System.Windows.Forms.PictureBox aa = new PictureBox();
            aa.Image = Image1;
            Image img1=aa.Image;
            aa.Image = Image2;
            Image img2 = aa.Image;

            int uniteWidth = img1.Width;//图片统一高度
            int uniteHeight = img1.Height;//图片统一宽度
            Bitmap tableChartImageCol1 = new Bitmap(uniteWidth * 2, uniteHeight);//第一行图片
            List<Image> imageList = new List<Image>();
            List<Image> imgListCopy = new List<Image>();
            imageList.Add(img1);
            imageList.Add(img2);
            foreach (Image i in imageList)//笨方法,重新new图片,改变图片高度宽度
            {
                Bitmap b = new Bitmap(i, uniteWidth, uniteHeight);
                imgListCopy.Add(b);
            }
            for (int i = 0; i < 2; i++)
            {
                if (imageList.Count - 1 >= i)
                {
                    imageList[i] = imgListCopy[i];//更改后的图片,赋给原图片
                }
            }
            if (true)//进去拼图 //横向拼接
            {
                //图片白板1
                Graphics graph = Graphics.FromImage(tableChartImageCol1);
                //初始化这个大图
                graph.DrawImage(tableChartImageCol1, uniteWidth * 2, uniteHeight);
                //初始化当前宽
                int currentWidth = 0;
                graph.Clear(System.Drawing.Color.White);  ////清除画布,背景设置为白色
                foreach (Image i in imageList)
                {
                    graph.DrawImage(i, currentWidth, 0);//拼图--图片拼起来
                    currentWidth += i.Width; //拼接改图后,当前宽度
                }
            }
            pictureBox1.Image = tableChartImageCol1;

  效果图一,待拼接图片

拼接完成效果

时间: 2024-11-16 22:52:04

图像拼接测试的相关文章

图像处理之图像拼接三

图像处理之图像拼接三 基于最佳缝合线的拼接: 一个图像如何求取最佳缝合线呢. //查找接缝 Ptr<SeamFinder> seam_finder; seam_finder = new detail::GraphCutSeamFinder(GraphCutSeamFinderBase::COST_COLOR); seam_finder->find(images_warped_f, corners, masks_warped); 这个是opencv的代码 可以看出需要知道conners.目

计算机视觉的一些测试数据集和源码站点

以下是computer vision:algorithm and application计算机视觉算法与应用这本书中附录里的关于计算机视觉的一些测试数据集和源码站点,我整理了下,加了点中文注解. ComputerVision: Algorithms and Applications Richard Szeliski 在http://szeliski.org/Book包含了更新的数据集和软件,请同样访问他. C.1 数据集 一个关键就是用富有挑战和典型的数据集来测试你算法的可靠性.当有背景或者他人

20190710记录2:插值图像拼接融合记录

6.对图像拼接边界进行过渡处理.向内收进去25像素的圈,两图各占50%. // Imagejoint.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include "Imagejoint.h" #include <afxwin.h> #ifdef _DEBUG #define new DEBUG_NEW #endif #include <atlimage.h>//CImage类 #include &

iOS app打包 -- 生成ipa测试包 步骤详解

最近有小伙伴问我如何打成ipa包分发给测试人员 , 虽然现在网上的教程很多,但是也很杂, 没有一个比较完整的讲解. 利用工作之余, 就说一下如何生成ipa包?共分为两种方法. 第一种方法: 1) 至于配置发布证书和AdHoc描述文件, 就不再累述, 下载下来双击安装即可.(ps: 生成AdHoc描述文件的时候要注意勾选所有的设备, 只有被描述文件包含的设备才能进行相应的测试. 如果是企业账号的话则不需要添加设备的udid). 2) 接下来开始配置xCode里的工作(包括发布证书和描述文件), 注

Monkey测试

1             概述 Monkey测试是Android自动化测试的一种手段.Monkey测试本身非常简单,就是模拟用户的按键输入,触摸屏输入,手势输入等,看设备多长时间会出异常. 当Monkey程序在模拟器或真实设备运行的时候,程序会产生一定数量或一定时间内的随机模拟用户操作的事件, 如点击,按键,手势等, 以及一些系统级别的事件.通常也称随机测试或者稳定性测试. 2             测试步骤 2.1   测试前提条件 1.将手机恢复出厂设置 2.恢复出厂设置后,进入设置--

软件测试中的数据库测试

数据库中数据的基本结构 定义一:数据元素集合(也可称数据对象)中各元素的关系. 定义二:相互之间存在特定关系的数据元素集合. 一个表(数据库),我们就称它为一个数据结构,它由很多记录(数据元素)组成,每个元素又包括很多 字段(数据项)组成数据库测试分类系统测试.集成测试.单元测试.功能测试.性能测试.安全测试系统测试.数据库在初期设计中需要进行分析测试. 对于各种数据元素进行完美融合,并理清相互之间的关系便是数据库结构的基本定义. 在数据库中,不同数据之间会存在既定的特殊关系,其属于各种数据元素

一些基本LINUX命令以及测试环境的搭建

LINUX操作系统平时用的不多,资深测试与开发同学们用的比较多,像我这样的一个人,只喜欢WINDOWS操作系统.但LINUX操作系统也用过一段时间, 知道一些基本命令,如果不记得的话,就百度一下,拿来就用,也不会太难.下面记录一下自己知道的一些常用命令,方便自己查询,以供大家参考. 首先 LINUX系统的特点是:稳定,安全,开源,可裁剪性.(可裁剪性还真没有理解透) 其次:LINUX 有四个版本,分别是:DEBIAN,UBUNTU,RED HAT,CENTOS. 我只用过CENTOS版本,不过公

微信+WeTest:小程序云端测试系统上线

日前,微信新增小程序测试系统,可便于开发者检测小程序缺陷,评估小程序产品质量.在小程序发布之前,开发者可将小程序代码提交到测试系统,在不同型号的手机真机上运行,执行完毕后自动生成测试报告.小程序云端测试平台,由WeTest提供基础支持,下载"微信开发者工具"即可使用. 小程序测试报告示例:  一. 云真机测试 Beta 为了方便广大开发者检测小程序程序缺陷.评估小程序产品质量,微信提供了免费的云真机测试环境以及一整套测试方案.在小程序交付到真实用户手中使用之前,你可以将小程序分发到云真

微信公众号API测试——接口调用频率限制

接口频率限制[1] 公众号调用接口并不是无限制的.为了防止公众号的程序错误而引发微信服务器负载异常,默认情况下,每个公众号调用接口都不能超过一定限制,当超过一定限制时,调用对应接口会收到如下错误返回码: {"errcode":45009,"errmsg":"api freq out of limit"} 各接口调用频率限制如下: 接口 每日限额 获取access_token 2000 自定义菜单创建 1000 自定义菜单查询 10000 自定义菜