我理解RGB ---值(0-255)红色,(0-255)绿色,(0-255)蓝色形成一种颜色.
究竟什么是BGR色彩空间?
它与RGB色彩空间有何不同?
在网上有例子和学习OpenCv,Orielly中给出的代码.
经过多次尝试后,out.avi文件写入0字节.我想知道我哪里出错了.
以下是我用过的代码......
int main(int argc, char* argv[]) {
CvCapture* input = cvCaptureFromFile(argv[1]);
IplImage* image = cvRetrieveFrame(input);
if (!image) {
printf("Unable to read input");
return 0;
}
CvSize imgSize;
imgSize.width = image->width;
imgSize.height = image->height;
double fps = cvGetCaptureProperty(
input,
CV_CAP_PROP_FPS
);
CvVideoWriter *writer = cvCreateVideoWriter(
"out.avi",
CV_FOURCC('M', 'J', 'P', 'G'),
fps,
imgSize
);
IplImage* colourImage;
//Keep processing frames...
for (;;) {
//Get a frame from the input video.
colourImage = cvQueryFrame(input);
cvWriteFrame(writer, colourImage);
}
cvReleaseVideoWriter(&writer);
cvReleaseCapture(&input);
}
Run Code Online (Sandbox Code Playgroud) 嗨,我一直在研究这个问题,但却没有很好的解决方案.
我正逐帧阅读视频,并使用背景减法来识别有移动的区域,并使用cvFindContours()来获取移动对象的矩形边界.
假设程序保持简单,那么只有2个人.
这些物体以它们可以重叠的方式移动,以一定的间隔转弯并移开.
我怎样才能正确标记这个人类x 2.
cvFindContour可以以随机方式返回边界.对于Frame1,Frame2,Frame3 ...... FrameN
我最初可以比较矩形边界质心来正确地标记人类.一旦人类重叠并离开,这种方法就会失败.
我试图跟踪原始obj的像素颜色(但是人类非常相似,某些区域有类似的颜色,如手,腿,头发)因此不够好.
我正在考虑使用Image Statistic:
CountNonZero(),SumPixels()Mean()Mean_StdDev()MinMaxLoc()Norm()
唯一地区分这两个对象.我相信这将是一个更好的方法.