Opencv 如何使用骨骼化图像创建三维曲面?
我正在使用OpenCV 3.1(与VTK7.1一起),并尝试使用2D图像创建类似3D的曲面 想法很简单:Opencv 如何使用骨骼化图像创建三维曲面?,opencv,3d,vtk,surface,Opencv,3d,Vtk,Surface,我正在使用OpenCV 3.1(与VTK7.1一起),并尝试使用2D图像创建类似3D的曲面 想法很简单: 输入连续图像(每帧视频流) 骨骼化处理每个帧 在三维空间中堆叠。问题是: 如何将图像转换为点云以及如何显示? 以下是代码的一部分: for (;;) { inStream >> singleFrm; if (singleFrm.empty()) { break; } else { imshow("Origin",
for (;;)
{
inStream >> singleFrm;
if (singleFrm.empty()) {
break;
}
else {
imshow("Origin", singleFrm);
singleFrm = singleFrm(roi);
cvtColor(singleFrm, roiSkelFrm, CV_RGB2GRAY);
const Size2d size(roiSkelFrm.cols, roiSkelFrm.rows);
threshold(roiSkelFrm, roiSkelFrm, 80, 255, cv::THRESH_BINARY);
thinning(roiSkelFrm, roiSkelFrm);
stackChFrm[0] = roiSkelFrm;
stackChFrm[1] = roiSkelFrm;
stackChFrm[2] = roiSkelFrm;
cv::merge(stackChFrm, 3, skelFrm);
skelFrm.convertTo(skelFrm, CV_32FC3);
viz::WCloud aCloudSlice(skelFrm, viz::Color::white());
myWindow.showWidget("image", aSlice);
myWindow.spinOnce(1, true);
if (waitKey(1) == 27)
break;
}
}
while (!myWindow.wasStopped())
{
myWindow.spinOnce(1, true);
}
应该类似于“行进立方体”算法应该更容易:如果你知道或假设像素的3D宽度和高度以及图像(在堆栈中)的深度,你可以直接转换图像:图像_s(x,y)变成3D点(x×宽度,y×高度,s×深度),s是图像的堆栈级别。应该类似于“行进立方体”算法应该更简单:如果您知道或假设像素的3D宽度和高度以及图像(在堆栈中)的深度,您可以直接转换图像:图像_s(x,y)成为3D点(x×宽度,y×高度,s×深度),s为图像的堆栈级别。