Я использую Emgu CV (OpenCV C# warper) и пытаюсь проецировать 3D -точки на 2D -плоскости изображения с помощью cvinvoke.projectpoints. Тем не менее, я получаю эту ошибку OpenCV: < /p>
Я тщательно проверил форму и тип всех входов. Вот моя полная настройка: < /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();
// 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)
};
// 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. Ошибка, даже когда все измерения кажутся правильными?
Есть ли какие -нибудь краевые случаи или известные проблемы, которые мне могут отсутствовать? Удача.>
Я использую Emgu CV (OpenCV C# warper) и пытаюсь проецировать 3D -точки на 2D -плоскости изображения с помощью cvinvoke.projectpoints. Тем не менее, я получаю эту ошибку OpenCV: < /p> [code]OpenCV: d == 2 && (sizes[0] == 1 || sizes[1] == 1 || sizes[0]*sizes[1] == 0)[/code] Я тщательно проверил форму и тип всех входов. Вот моя полная настройка: < /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();
// 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) };
// 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. Ошибка, даже когда все измерения кажутся правильными? Есть ли какие -нибудь краевые случаи или известные проблемы, которые мне могут отсутствовать? Удача.>
Инициализатор типа для Emgu.CV.CvInvoke выдал исключение.
когда я пытаюсь использовать Emgu CV. Я перепробовал все, что мог, чтобы это исправить, но ошибка по-прежнему выдает ту же ошибку, и когда я нажимаю кнопку, она...
Я пытаюсь установить emgu.cv.runtime.windows из Visual Studio 2017 и установить по рекомендованному методу щелкнуть правой кнопкой мыши ссылки и установки через Nuget.
Однако Я получаю ошибку ниже. Вы пытаетесь установить этот пакет в проект,...
Я хочу нарисовать 3D-позиции на изображении веб-камеры, используя функцию projectPoints OpenCV.
Во время тестирования я заметил, что у меня всегда есть определенное смещение от реального объекта. Это наиболее очевидно при попытке спроецировать...
У меня есть две трехмерные точки, которые я пытаюсь спроецировать на плоскость двухмерного изображения с помощью cv::projectPoints(). Изначально точки не находятся в системе координат камеры, поэтому мне приходится их трансформировать. Я проверяю...