Emgu CV: cvinvoke.projectPoints бросает «openCV: d == 2 && (размеры [0] == 1 || Размеры [1] == 1 || Размеры [0] размеры C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Emgu CV: cvinvoke.projectPoints бросает «openCV: d == 2 && (размеры [0] == 1 || Размеры [1] == 1 || Размеры [0] размеры

Сообщение Anonymous »

Я использую Emgu CV (OpenCV C# warper) и пытаюсь проецировать 3D -точки на 2D -плоскости изображения с помощью cvinvoke.projectpoints. Тем не менее, я получаю эту ошибку OpenCV: < /p>

Код: Выделить всё

OpenCV: d == 2 && (sizes[0] == 1 || sizes[1] == 1 || sizes[0]*sizes[1] == 0)

Я тщательно проверил форму и тип всех входов. Вот моя полная настройка: < /p>
🔧 Setup: < /p>
emgu.cv Версия: 4.11.0 < /p>
Язык: C#< /p>
Платформа: .net (winforms) < /p>
📌 код:
(cshp) < /p>
📌 📌 📌 📌>
< /p> < /p>
📌 📌> < /p> < /p>
📌 код:.// Assume i is the current camera index
Mat rVec = new Mat();
Mat tVec = new Mat();

// Intrinsic parameters (from calibration)
Matrix camMatrix = K; // 3x3, Cv64F
Matrix distCoeffs = D; // 1x4, Cv64F

// 3D points in meters
var coords = new List
{
new float[] { 0.1f, 0.2f, 0.5f },
new float[] { 0.2f, 0.1f, 0.5f },
new float[] { 0.3f, 0.1f, 0.5f },
new float[] { 0.4f, 0.1f, 0.5f },
new float[] { 0.5f, 0.1f, 0.5f },
new float[] { 0.6f, 0.1f, 0.5f }
};

var coordsArray = coords.Select(p => new MCvPoint3D32f(p[0], p[1], p[2])).ToArray();

// Corresponding 2D image points
List
pointsF = new List
{
new PointF(1234f, 567f),
new PointF(1250f, 570f),
new PointF(1270f, 575f),
new PointF(1290f, 580f),
new PointF(1305f, 583f),
new PointF(1320f, 586f)
};

// SolvePnP
CvInvoke.SolvePnP(
coordsArray,
pointsF.ToArray(),
camMatrix,
distCoeffs,
rVec,
tVec
);

// Convert translation to meters if needed
// tVec.ConvertTo(tVec, tVec.Depth, 1.0 / 1000.0); // optional depending on units

// Project 3D points
var proj_obj = new Emgu.CV.Util.VectorOfPointF();
CvInvoke.ProjectPoints(
coordsArray,
rVec,
tVec,
camMatrix,
distCoeffs,
proj_obj // this throws the error
);
< /code>
✅ Входы (подтверждены):
coordsarray.length == 6 < /p>
rVEC: 3x1, тип CV64F, 1 канал < /p>
TVEC: 3x1, тип CV64F, 1 канал < /p>
cammaTrix: 3x3, 1 канал < /p>
cammatrix: 3x3, 1 канал < /p>
3x1, type cv64f, 1 канал < /p>
Канал
e.g.:
[2416, 0, 960]
[ 0,2416, 540]
[ 0, 0, 1]
< /code>
distcoeffs: 1x4, type cv64f, 1 канал < /p>
❗ Проблема:
Даже при все входные размеры и типы, кажущиеся правильными, я все еще получаю эту ошибку с точки Project. Ошибка, даже когда все измерения кажутся правильными?
Есть ли какие -нибудь краевые случаи или известные проблемы, которые мне могут отсутствовать? Удача.>

Подробнее здесь: https://stackoverflow.com/questions/796 ... es0-1-size
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Инициализатор типа Emgu.CV.CvInvoke выдал исключение.
    Anonymous » » в форуме C#
    0 Ответы
    45 Просмотры
    Последнее сообщение Anonymous
  • Ошибка EMGU при попытке установить emgu.cv.runtime.windows в VC# 2017
    Anonymous » » в форуме C#
    0 Ответы
    38 Просмотры
    Последнее сообщение Anonymous
  • Python OpenCV projectPoints нейтральное положение вне центра
    Anonymous » » в форуме Python
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Как OpenCV projectPoints выполняет преобразования перед проецированием?
    Anonymous » » в форуме Python
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Проблемы с настройкой экспозиции/усиления с помощью Emgu.CV (или OpenCV) с помощью Scientific Camer
    Гость » » в форуме C#
    0 Ответы
    82 Просмотры
    Последнее сообщение Гость

Вернуться в «C#»