Image processing 基于EMGU-CV的图像拼接
我想做图像拼接,以产生一个全景图像在一个位置大约360度。现在我的编码是这样的 这是缝合按钮编码时的捕获Image processing 基于EMGU-CV的图像拼接,image-processing,image-stitching,Image Processing,Image Stitching,我想做图像拼接,以产生一个全景图像在一个位置大约360度。现在我的编码是这样的 这是缝合按钮编码时的捕获 int n=1; 字符串文件名; HttpWebRequest请求=(HttpWebRequest)WebRequest.Create(“http://192.168.0.4/view/snapshot.shtml?picturepath=/jpg/image.jpg"); res=request.GetResponse();/。GetResponse(); 字符串[]CapturedIma
int n=1;
字符串文件名;
HttpWebRequest请求=(HttpWebRequest)WebRequest.Create(“http://192.168.0.4/view/snapshot.shtml?picturepath=/jpg/image.jpg");
res=request.GetResponse();/。GetResponse();
字符串[]CapturedImage=新字符串[28];
Image[]TotalImage=新图像[28];
做
{
fileName=@“D:\Ervin Loong(116834P)\Program Testing\Images\“+”Image“+(n++)+”.jpg;//文件位置和文件名。
}
while(System.IO.File.Exists(fileName));//检查以前保存的现有文件。如果是,请添加另一张新图片。
{
AMCLiveFeed.SaveCurrentImage(0,文件名);
res.Close();
}
如果(n==29)
{
对于(int i=0;i<28;i++)//i<10-保存10个图像
{
CapturedImage[i]=@“D:\Ervin Loong(116834P)\Program Testing\Images\“+”Images“+(i+1)+”.jpg”;
TotalImage[i]=新图像(CapturedImage[i]);
}
尝试
{
使用(Stitcher-Stitcher=new-Stitcher(false))//虽然Stitcher类是为GPU加速而构建的,但必须传递一个false标志才能启用CPU处理。因为GPU尚未实现。
{
图像捕获结果=缝合器缝合(总图像);
imgbxdisplaysitched.Image=CapturedResult;//imagebox显示缝合的结果。
}
}
最后
{
foreach(TotalImage中的图像处理)
{
DisposeImage.Dispose();
}
}
}
问题是什么?目前该程序只能水平缝合,不能垂直缝合,当它尝试垂直缝合时,打开cv:unable to allocate ____; bytes(无法分配字节)错误将发生,因此如何解决?您的问题可能不够详细。告诉我们更多关于代码的信息:TotalImage
来自哪里?是什么让你认为它只能水平缝合?你做过测试吗?你有截图给我们看吗?我已经在主线程中添加了编码,看看你是否能理解,但是对于截图,我无法从我的计算机中卸载它。
int n = 1;
String fileName;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://192.168.0.4/view/snapshot.shtml?picturepath=/jpg/image.jpg");
res = request.GetResponse();//.GetResponse();
string[] CapturedImage = new string[28];
Image<Bgr, Byte>[] TotalImage = new Image<Bgr, Byte>[28];
do
{
fileName = @"D:\Ervin Loong (116834P)\Program Testing\Images\" + "Image" + (n++) + ".jpg"; // File location & Filename.
}
while (System.IO.File.Exists(fileName)); // check for existing previously saved files. If yes, add another new picture.
{
AMCLiveFeed.SaveCurrentImage(0, fileName);
res.Close();
}
if (n == 29)
{
for (int i = 0; i < 28; i++) // i < 10 - save 10 images
{
CapturedImage[i] = @"D:\Ervin Loong (116834P)\Program Testing\Images\" + "Image" + (i + 1) + ".jpg";
TotalImage[i] = new Image<Bgr, byte>(CapturedImage[i]);
}
try
{
using (Stitcher stitcher = new Stitcher(false)) //Although the Stitcher class is built for GPU acceleration, a false flag must be passed to enable CPU processing. As GPU is not implemented yet.
{
Image<Bgr, Byte> CapturedResult = stitcher.Stitch(TotalImage);
IMGBXDisplayStitched.Image = CapturedResult; //imagebox displays stitched results.
}
}
finally
{
foreach (Image<Bgr, Byte> DisposeImage in TotalImage)
{
DisposeImage.Dispose();
}
}
}