【问题标题】:How to get auto generate measurement on object with openCV?如何使用openCV在对象上自动生成测量?
【发布时间】:2014-07-17 05:55:27
【问题描述】:

这是我想要实现对象测量的代码,但我不知道我必须使用什么函数以及如何对其进行编码以及如何使其自动生成。有谁能帮帮我吗?提前谢谢你。


cv::VideoCapture cap;

if (!cap.isOpened())  // check if succeeded to connect to the camera
    CV_Assert("Can't open Web-Cam");

double CamHeight = cap.get(CV_CAP_PROP_FRAME_HEIGHT);
double CamWidth  = cap.get(CV_CAP_PROP_FRAME_WIDTH);

//Display text on the screen function
int imgW = 650;
int imgH = 50;
int fontFace = FONT_HERSHEY_PLAIN;
double fontScale = 1.5;
int thickness = 2;
Point textOrg(imgW/5, imgH/1.3);

int value=10;
string someText = format("Dimension: %d ", value); //Display the dimension (output)
putText(frame, someText, textOrg, fontFace, fontScale, Scalar::all(255), thickness, 8);
imshow("Object Measurement",frame);;

【问题讨论】:

  • 你能解释一下“物体上的测量”是什么意思吗?能不能举个具体的例子?

标签: opencv object dimension measure


【解决方案1】:

这段代码是关于将文本放到某个图像上的。

你在哪里初始化frame

获取帧的主循环在哪里?

一般来说,您使用while(waitKey(someMiliseconds) != someValue) 来打破获取帧并使用键盘按钮处理它们的循环。如果不使用waitKey,窗口会立即关闭。

关于对象测量,对于像素级测量,您需要使用findContoursboundingRect 等方法。教程在this link。对于现实世界的维度,您需要calibrate your camera,使用内在(焦距、失真)和外在(物体的深度)参数来重建现实世界坐标。借助深度信息,您可以提取真实尺寸(反之亦然)。

简而言之,您不能仅使用一台相机“自动生成”3D 重建和测量,除非假设对象的深度是恒定的。 O.w.,用户应该输入深度。

您可以utilize another camera 使用立体视觉“自动生成”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    相关资源
    最近更新 更多