27-09-21, 04:31 PM
(27-09-21, 02:20 PM)معاند الحظ كتب : اخوي الماجيك
حاولت اكتشف المشكلة في كودك وان شاء الله اني لقيت الحل
وبعد البحث في الرابط الذي ارفقته في ردك السابق وجدت كود بلغة فيجوال بيسك
حيث تم استيراد فضاء الاسماء OpenCvSharp و OpenCvSharp.Extensions
لذا بحثت باستخدام جملة البحث nuget OpenCvSharp
وقمت بتجربة الاصدارات المختلفة لكن التي نجحت هي OpenCvSharp3-AnyCPU -Version 4.0.0.20181129 ربما لاني استخدم فيجوال ستوديو 2010
حيث قمت بتثبيتها على مشروعي التجريبي باستخدام Nuget Packages Manager
باستخدام الامر التالي
Install-Package OpenCvSharp3-AnyCPU -Version 4.0.0.20181129
بعدها اختفت الخطوط الحمراء من الكود لكن بقي السطر التالي
Dim output = detectionNet.Forward
والمشكلة كانت ان detectionNet عبارة عن عنصر كلاس لا ادري ماهو مصدرة
المهم في النهاية تجاوزت المشكلة هذي ايضا عبر وضع تعريف للمتغير Dim detectionNet As New Dnn.Net
لكن بقيت بعض الخطوط في Me.labelNames.Length حيث لا ادري ماهو وايضا frameWidth
اخيرا اليك محاولتي وارجو ان يكون الحل صحيح
واتمنى منك ان تخبرني سواء كان الحل صحيح او لاPHP كود :
Imports OpenCvSharp
Imports OpenCvSharp.Extensions
Public Class Form1
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Dim detectionNet As New Dnn.Net
Dim output = detectionNet.Forward
Dim detectionMat = New Mat(output.Size(2), output.Size(3), MatType.CV_32F, output.Ptr(0))
For i As Integer = 0 To detectionMat.Rows - 1
Dim confidence As Single = detectionMat.At(Of Single)(i, 2)
If confidence > 0.6 Then
Dim classid As Integer = CInt(detectionMat.At(Of Single)(i, 1))
If classid < Me.labelNames.Length AndAlso (classid = 1) Then
Dim x1 As Integer = CInt((detectionMat.At(Of Single)(i, 3) * frameWidth))
Dim y1 As Integer = CInt((detectionMat.At(Of Single)(i, 4) * frameHeight))
Dim x2 As Integer = CInt((detectionMat.At(Of Single)(i, 5) * frameWidth))
Dim y2 As Integer = CInt((detectionMat.At(Of Single)(i, 6) * frameHeight))
End If
End If
Next
End Sub
End Class
نعم الحل صحيح
بارك الله فيك
تسلم ايدك بجد ♥

