ivilson / Yolov7net

Yolo Detector for .Net 8
83 stars 25 forks source link

预测的框不对位置大小绘制出来不对 #36

Open MooWeii opened 3 weeks ago

MooWeii commented 3 weeks ago

使用的OpencvSharp4绘制的, 代码如下, 是SKBitmap坐标系的问题吗

var yolo = new Yolov8("box.onnx", false);
yolo.SetupLabels(new string[] { "box" });
Mat mat = new Mat(dialog.FileName);//AppDomain.CurrentDomain.BaseDirectory+""
RawImage = WriteableBitmapConverter.ToWriteableBitmap(mat);
var image = mat.ToBytes();
var predictResult = yolo.Predict(SKBitmap.Decode(image));
foreach (var predict in predictResult)
{
    Cv2.Rectangle(mat, new Rect(Convert.ToInt32(predict.Rectangle.MidX - predict.Rectangle.Width/2), Convert.ToInt32(predict.Rectangle.MidY - predict.Rectangle.Height/2), Convert.ToInt32(predict.Rectangle.Width), Convert.ToInt32(predict.Rectangle.Height)), Scalar.Red, 2);
}
AfterImage = WriteableBitmapConverter.ToWriteableBitmap(mat);
MooWeii commented 3 weeks ago

用release中的demo改了下模型和照片也是生成的预测框位置和大小不准 demo_result_yolov8

iwaitu commented 3 weeks ago

按照示例代码用 skiasharp 绘制有这个问题吗?我看着你的rect 边框计算有问题啊

MooWeii commented 3 weeks ago

是的, 示例代码仅修改了模型路径和验证图片路径, 我可以把模型和验证图片发给您

iwaitu commented 3 weeks ago

给我个下载地址,我帮你试试看

MooWeii commented 2 weeks ago

这个链接, 链接里是release中的demo, 已经改好了模型位置和图片路径, 运行目录下面有一张正确的预测图做对比 源码下载

sharpwood commented 2 weeks ago

位置的确不准确。

MooWeii commented 1 week ago

给我个下载地址,我帮你试试看

好像是因为这张图片在电脑上旋转过的原因导致了SkiaSharp获取到的宽和高互换了, 图像旋转完是3024*4032, 但是SkiaSharp读到的是4032*3024