所以我有大约160张大小为2048px x 512px的图像。图像是灰色图像,我检查白色区域,区域周围的矩形在列表中安全。我现在想要将图像拼接在一起并随后绘制矩形,我更新每个矩形的y位置,以便我可以在正确的位置绘制它们。
拼接和更新y位置工作正常。拼接图像大约为2048px x 80kpx。 我有11个白色区域被检测到,但是只有3个矩形被绘制,即使在调试所有11个应该被绘制。
前3个矩形位于前30k y轴px中,其他3个矩形起始于45k px。当我更改代码以便从图片60开始时,前3个矩形当然不会被绘制,而是绘制其他8个矩形。
你们有谁知道如何解决这个问题?
public void GenerateImageMap()
{
StichtedImageTemp = new Image<Bgr, byte>(ImgWidth, ImgHeight * (GrayImageMap.Count));
for (int i = 0; i < GrayImageMap.Count; i++)
{
StichtedImageTemp.ROI = new System.Drawing.Rectangle(0, i * ImgHeight, ImgWidth, ImgHeight);
GrayImageMap[i].Convert<Bgr,byte>().CopyTo(StichtedImageTemp);
CvInvoke.cvResetImageROI(StichtedImageTemp);
}
StichtedImageTemp.Save("GrayImageMap.png");
}
public void GenerateDefectMap(List<Rectangle> RectangleItems) {
GenerateImageMap();
foreach (var item in RectangleItems)
{
StichtedImageTemp.Draw(item.GetRectangle, new Bgr(Color.Aquamarine), 3);
}
StichtedImageTemp.Save("GrayDefectMap.png");
}
答案 0 :(得分:0)
你没有提供足够的资料。例如,如何在GenerateDefectMap中调用GenerateImageMap影响任何东西,它不会传递或修改RectangleItems,而且似乎只对GrayImageMap进行操作,而GrayImageMap可能是全局的,或者知道的东西。
就个人而言,我不会使用System.Drawing方法,或者您必须小心边缘处的插值等。我会手动转换(逐个像素),这在逻辑上比tupple系统简单得多已经选择。无论如何,这是我的意见。