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