• 大小: 39.61MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-08-03
  • 语言: C/C++
  • 标签: MFC  图片拼接  

资源简介

用MFC将相同大小的2张图片拼接成一张图片,可以是BMP,可以是JPG,程序打开文件后自己更改路径即可运行

资源截图

代码片段和文件信息

#include “stdafx.h“
#include “Image.h“
Image::Image()
{
lineP = new BYTE *[2];
for (int i=0; i<2; i++)
{
next[i] = -1;
}

}

Image::~Image()
{

}

HRESULT Image::CreateInstance(Image **ppimg)
{
if (ppimg == NULL)
{
return E_POINTER;
}

Image *pimg = new (std::nothrow) Image();

if (pimg == NULL)
{
return E_OUTOFMEMORY;
}

// 构造函数将ref count设置为1
*ppimg = pimg;

return S_OK;
}

void Image::load(LPCTSTR file) 
{
src = CImage();
src.Load(file);//加载图片
pData = (BYTE *)src.GetBits();//获取每个点

//获取部分参数
width = src.GetWidth();
height = src.GetHeight();
bpp = src.GetBPP();
pitch = src.GetPitch();
//加载边界
loadLine();
}


void Image::loadLine() 
{

lineP[0] = new BYTE[height];//左边0
lineP[1] = new BYTE[height];//右边1
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
int p =  -1 ;
if (x == 0) 
{
p = 0;//左边
}
else if (x == width - 1)
{
p = 1;//右边
}

//参数0 左右边 

if (p != -1) 
{
BYTE b = *(pData + pitch * y + x * bpp / 8 + 0);
BYTE g = *(pData + pitch * y + x * bpp / 8 + 1);
BYTE r = *(pData + pitch * y + x * bpp / 8 + 2);
lineP[p][0] = b * 0.114 + g * 0.587 + r * 0.299;
}

}
}
}

void Image::join(LPCTSTR srcFilePath[] LPCTSTR destFilePath)
{
Image *srcImage = new Image[2];
    CImage destImage;
   

    for (int i = 0; i < 2; i++)
    {
        srcImage[i].load(srcFilePath[i]);
        srcImage[i].linePower = new double *[2];//其他cnt张图片的边界权值
    }

    int height = srcImage[0].height;
int width = srcImage[0].width;
int bpp = srcImage[0].bpp;
    int length[2] = {heightheight};//用于记录2条边的长度
    destImage.Create(width * 2 height  bpp);//创建新的图片

    //计算每张图片2条边与别的图片的平方差
    for (int i = 0; i < 2; i++)
    {
        for (int j = 0; j < 2; j++) 
        {
            srcImage[i].linePower[j] = new double[2];//2条边的权值
            if (i == j) 
{
                for (int line = 0; line < 2; line++) 
                {
                    //-1为跳过标识
                    srcImage[i].next[line] = -1;
                }
                continue;//当前图片跳过本次循环
            }
            for (int line = 0; line < 2; line++) 
            {
                int otherLine = (line + 1) % 2;//0->1 1->0 
                int count = 0;//平方差之和

                for (int point = 0; point < length[line]; point++) 
                {
                    count += pow((double)(srcImage[i].lineP[line][point] - srcImage[j].lineP[otherLine][point]) 2);
                }
                srcImage[i].linePower[j][line] = count / length[line];//平均平方差
            }
        }
        for (int line = 0; line < 2; line++) 
        {
            int min = -1;//标记
            for (int j = 0; j < 2; j++) 
            {
                if (i == j) continue;//本张图片跳过
                if (min==-1 || srcImage[i].linePower[min][line] > srcImage[i].linePow

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     250368  2018-09-21 13:23  两张图片拼接\Debug\tupianpinjie.exe

     文件    1710576  2018-09-21 13:23  两张图片拼接\Debug\tupianpinjie.ilk

     文件    5843968  2018-09-21 13:23  两张图片拼接\Debug\tupianpinjie.pdb

     文件       3824  2018-09-21 13:23  两张图片拼接\tupianpinjie\Debug\cl.command.1.tlog

     文件      91902  2018-09-21 13:23  两张图片拼接\tupianpinjie\Debug\CL.read.1.tlog

     文件       2816  2018-09-21 13:23  两张图片拼接\tupianpinjie\Debug\CL.write.1.tlog

     文件     306618  2018-09-21 13:23  两张图片拼接\tupianpinjie\Debug\Image.obj

     文件       5913  2018-09-21 10:37  两张图片拼接\tupianpinjie\Debug\ImageToAVI.obj

     文件          2  2018-09-21 13:23  两张图片拼接\tupianpinjie\Debug\link-cvtres.read.1.tlog

     文件          2  2018-09-21 13:23  两张图片拼接\tupianpinjie\Debug\link-cvtres.write.1.tlog

     文件          2  2018-09-21 13:23  两张图片拼接\tupianpinjie\Debug\link.11328-cvtres.read.1.tlog

     文件          2  2018-09-21 13:23  两张图片拼接\tupianpinjie\Debug\link.11328-cvtres.write.1.tlog

     文件          2  2018-09-21 13:23  两张图片拼接\tupianpinjie\Debug\link.11328.read.1.tlog

     文件          2  2018-09-21 13:23  两张图片拼接\tupianpinjie\Debug\link.11328.write.1.tlog

     文件          2  2018-09-21 13:23  两张图片拼接\tupianpinjie\Debug\link.5436-cvtres.read.1.tlog

     文件          2  2018-09-21 13:23  两张图片拼接\tupianpinjie\Debug\link.5436-cvtres.write.1.tlog

     文件          2  2018-09-21 13:23  两张图片拼接\tupianpinjie\Debug\link.5436.read.1.tlog

     文件          2  2018-09-21 13:23  两张图片拼接\tupianpinjie\Debug\link.5436.write.1.tlog

     文件          2  2018-09-21 13:23  两张图片拼接\tupianpinjie\Debug\link.6900-cvtres.read.1.tlog

     文件          2  2018-09-21 13:23  两张图片拼接\tupianpinjie\Debug\link.6900-cvtres.write.1.tlog

     文件          2  2018-09-21 13:23  两张图片拼接\tupianpinjie\Debug\link.6900.read.1.tlog

     文件          2  2018-09-21 13:23  两张图片拼接\tupianpinjie\Debug\link.6900.write.1.tlog

     文件       2082  2018-09-21 13:23  两张图片拼接\tupianpinjie\Debug\link.command.1.tlog

     文件       6018  2018-09-21 13:23  两张图片拼接\tupianpinjie\Debug\link.read.1.tlog

     文件       1336  2018-09-21 13:23  两张图片拼接\tupianpinjie\Debug\link.write.1.tlog

     文件        772  2018-09-21 13:23  两张图片拼接\tupianpinjie\Debug\mt.command.1.tlog

     文件        688  2018-09-21 13:23  两张图片拼接\tupianpinjie\Debug\mt.read.1.tlog

     文件        506  2018-09-21 13:23  两张图片拼接\tupianpinjie\Debug\mt.write.1.tlog

     文件       1220  2018-09-21 10:37  两张图片拼接\tupianpinjie\Debug\rc.command.1.tlog

     文件       3522  2018-09-21 10:37  两张图片拼接\tupianpinjie\Debug\rc.read.1.tlog

............此处省略55个文件信息

评论

共有 条评论