gpt4 book ai didi

opencv cvblob -- 渲染除白色以外的 Blob

转载 作者:太空宇宙 更新时间:2023-11-03 21:23:01 24 4
gpt4 key购买 nike

我正在尝试使用 cvblob 检测对象。不知何故,我的代码只标记了白色对象。如何标记其他颜色的物体,例如一 jar 啤酒或一瓶水。

这是我的代码:

#include "highgui.h"
#include "cv.h"
#include "cvaux.h"
#include "iostream"
#include <stdio.h>
#include <ctype.h>

#include <cvblob.h>

using namespace cv;
using namespace std;
using namespace cvb;

int main(int argc, char** argv) {
CvTracks tracks;

cvNamedWindow("frame", CV_WINDOW_AUTOSIZE);
cvMoveWindow("frame", 50, 100);

CvCapture* capture;

IplImage* frame = 0;

capture = cvCreateCameraCapture( 0 ); //capture frames from cam on index 0: /dev/video0/

if (!capture) {
return -1;
}

cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH, 320);
cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT, 240);

frame = cvQueryFrame(capture);

while(frame) {
IplImage *gray = cvCreateImage(cvGetSize(frame), IPL_DEPTH_8U, 1);
cvCvtColor(frame, gray, CV_BGR2GRAY);
cvThreshold(gray, gray, 150, 255, CV_THRESH_BINARY);

IplImage *labelImg=cvCreateImage(cvGetSize(gray), IPL_DEPTH_LABEL, 1);
CvBlobs blobs;
unsigned int result=cvLabel(gray, labelImg, blobs);

cvFilterByArea(blobs, 500, 1000000);
// cvRenderBlobs(labelImg, blobs, frame, frame, CV_BLOB_RENDER_BOUNDING_BOX);
cvRenderBlobs(labelImg, blobs, frame, frame, CV_BLOB_RENDER_CENTROID);
cvUpdateTracks(blobs, tracks, 200., 5);
cvRenderTracks(tracks, frame, frame, CV_TRACK_RENDER_ID|CV_TRACK_RENDER_BOUNDING_BOX);


for (CvBlobs::const_iterator it=blobs.begin(); it!=blobs.end(); ++it) {
cout << "Blob #" << it->second->label << ": Area=" << it->second->area << ", Centroid=(" << it->second->centroid.x << ", " << it->second->centroid.y << ")" << endl;
}

cvShowImage("frame", frame);

cout << "----------------------------" << endl;

frame = cvQueryFrame(capture);

char c = cvWaitKey(10);
if(c==27)
break;

}
}

如有任何提示,我们将不胜感激。

米洛

最佳答案

这是默认选项,如果不更改 cvblob 库中的源代码,则无法更改它。

如果你真的想改变这很容易,你可以创建相同方法的副本,添加一个新的输入变量,如 CvScalar 来选择输出颜色。非常简单。

cvRenderBlob 方法将在 cvcontour.cpp 中。

我对 cvblob 库做了很多改进,在接下来的几个月里我会把它推送给创建者。

关于opencv cvblob -- 渲染除白色以外的 Blob ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7140365/

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