資源簡介
用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? {
for?(int?x?=?0;?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?????????????????{
????????????????????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\li
?????文件??????????2??2018-09-21?13:23??兩張圖片拼接\tupianpinjie\Debug\li
?????文件??????????2??2018-09-21?13:23??兩張圖片拼接\tupianpinjie\Debug\li
?????文件??????????2??2018-09-21?13:23??兩張圖片拼接\tupianpinjie\Debug\li
?????文件??????????2??2018-09-21?13:23??兩張圖片拼接\tupianpinjie\Debug\li
?????文件??????????2??2018-09-21?13:23??兩張圖片拼接\tupianpinjie\Debug\li
?????文件??????????2??2018-09-21?13:23??兩張圖片拼接\tupianpinjie\Debug\li
?????文件??????????2??2018-09-21?13:23??兩張圖片拼接\tupianpinjie\Debug\li
?????文件??????????2??2018-09-21?13:23??兩張圖片拼接\tupianpinjie\Debug\li
?????文件??????????2??2018-09-21?13:23??兩張圖片拼接\tupianpinjie\Debug\li
?????文件??????????2??2018-09-21?13:23??兩張圖片拼接\tupianpinjie\Debug\li
?????文件??????????2??2018-09-21?13:23??兩張圖片拼接\tupianpinjie\Debug\li
?????文件??????????2??2018-09-21?13:23??兩張圖片拼接\tupianpinjie\Debug\li
?????文件??????????2??2018-09-21?13:23??兩張圖片拼接\tupianpinjie\Debug\li
?????文件???????2082??2018-09-21?13:23??兩張圖片拼接\tupianpinjie\Debug\li
?????文件???????6018??2018-09-21?13:23??兩張圖片拼接\tupianpinjie\Debug\li
?????文件???????1336??2018-09-21?13:23??兩張圖片拼接\tupianpinjie\Debug\li
?????文件????????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個文件信息
評論
共有 條評論