gpt4 book ai didi

c++ - OpenCV+cvBlobsLib : blobs come out "stretched" on the x-axis

转载 作者:太空宇宙 更新时间:2023-11-04 14:13:34 25 4
gpt4 key购买 nike

使用 OpenCV 和 cvBlobsLib 制作通常的 blob 跟踪器,我遇到了这个问题,似乎没有其他人遇到过,这让我很难过。我得到 RGB/BGR 帧,选择要隔离的颜色,将其转换为黑白,找到 Blob 并在每个 Blob 上添加边界矩形,但是当我显示最终图像时,该框在 x 轴上被拉伸(stretch):当物体在左边时,盒子离它很近(虽然大约大 2.5 倍),当它向右移动时,盒子移动得更快(= 离物体越来越远)直到它到达右端当对象还没有到一半时的窗口。这不会发生在 y 轴上,那里一切都很好。这不是矩形的问题,当我使用 fillBlob 时也会发生这种情况, Blob 形状会拉伸(stretch)且未对齐。此外,这不是与图像捕获相关的问题,因为我已经尝试使用 kinect (OpenNI)、网络摄像头甚至使用单个图像 (imread()),并且我验证了使用的每个 ImageGenerator、Mat、IplImage 都是 640x480、8 位深度,为此我对 namedWindow 使用了 AUTOSIZE(放大到全屏窗口也无济于事)。显示 BGR 帧和阈值图像没有问题,它们都适合窗口,但是当我将检测到的 Blob 与原始图像合并时,它们似乎属于不同的分辨率空间。这是代码,与网上随处可见的常见示例相比没有太大变化:

//[...]
namedWindow("Color Image", CV_WINDOW_AUTOSIZE);
namedWindow("Color Tracking", CV_WINDOW_AUTOSIZE);
//[...] I already got the two cv::Mat I need, imgBGR and imgTresh
CBlobResult blobs;
CBlob *currentBlob;
Point pt1, pt2;
Rect rect;

//had to do Mat to IplImage conversion, since cvBlobsLib doesn't like mats
IplImage iplTresh = imgTresh;
IplImage iplBGR = imgBGR;

blobs = CBlobResult(&iplTresh, NULL, 0);
blobs.Filter(blobs, B_EXCLUDE, CBlobGetArea(), B_LESS, 100);
int nBlobs = blobs.GetNumBlobs();
for (int i = 0; i < nBlobs; i++)
{
currentBlob = blobs.GetBlob(i);
rect = currentBlob->GetBoundingBox();
pt1.x = rect.x;
pt1.y = rect.y;
pt2.x = rect.x + rect.width;
pt2.y = rect.y + rect.height;
cvRectangle(&iplBGR, pt1, pt2, cvScalar(255, 255, 255, 0), 3, 8, 0);
}
//[...]
imshow("Color Image", imgBGR);
imshow("Color Tracking", imgTresh);

“[...]”是与此问题无关的代码,但如果您需要有关我如何处理图像的更多信息,请告诉我,我会发布它。

基于我捕获图像的方式没有改变任何东西这一事实,BGR 帧和 B/W 图像被很好地显示,并且在获得 Blob 之后任何显示它们的方式都会给出相同(错误)的结果,问题一定是 CBlobResult() 和 matrix2ipl 转换之间的问题,但我真的不知道如何找到它。

最佳答案

天哪,我花了很长时间才写出整个问题,第二天我几乎是随手找到了答案。当我为阈值处理创建黑白矩阵时,我没有将其设为单 channel ;我复制了 BGR 矩阵类型,因此具有 3 个 channel 的阈值图像,导致 widthStep 为帧宽度的 3 倍。已解决创建类型为 CV_8UC1 的 cv::Mat imgTresh。

关于c++ - OpenCV+cvBlobsLib : blobs come out "stretched" on the x-axis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13002466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com