1
我使用visual C++ 2008 express编写了opencv 2.1程序。我想获取每个像素的每个像素颜色数据并按像素修改它们。即使在彩色视频图像的情况下,nchannel()也会返回1 1
我知道代码“frmSource.channels();”返回mat frmSource的颜色通道,但它总是返回1,即使它绝对是彩色视频图像,不是3或4.
我错了吗?
如果我错了,请指导我如何获取每个像素的每个颜色分量数据。另外,“get(CV_CAP_PROP_FRAME_COUNT)”的总帧数远远大于我期望的帧数,所以我将get(CV_CAP_PROP_FRAME_COUNT)除以get(CV_CAP_PROP_FPS帧频。“),并且我可以得到结果如我所料。
我知道这个框架就像是一部电影的剪辑,每秒30帧。是对的吗?
我的编码如下:
void fEditMain()
{
VideoCapture vdoCap("C:/Users/Public/Videos/Sample Videos/WildlifeTest.wmv");
// this video file is provided in window7
if(!vdoCap.isOpened())
{
printf("failed to open!\n");
return;
}
Mat frmSource;
vdoCap >> frmSource;
if(! frmSource.data) return;
VideoWriter vdoRec(vRecFIleName, CV_FOURCC('W','M','V','1'), 30, frmSource.size(), true);
namedWindow("video",1);
// record video
int vFrmCntNo=1;
for(;;)
{
int vDepth = frmSource.depth();
vChannel = frmSource.channels();
// here! vChannel is always 1, i expect 3 or 4 because it is color image
imshow("video", frmSource);// frmSource Show
vdoRec << frmSource;
vdoCap >> frmSource;
if(! frmSource.data)
return;
}
return;
}
vChannel的类型是什么? – karlphillip
OpenCV在版本2.3.1上!我强烈建议你更新你的版本。 – karlphillip