我正在尝试获取第一张图像,逐像素地进行一些修改并将结果写入第二张图像。
int main(int argc, char* argv[])
{
namedWindow("Frame");
testVid("D:\\Penguins.mp4");
destroyAllWindows();
return EXIT_SUCCESS;
}
void testVid(char* videoFilename)
{
VideoCapture capture(videoFilename);
Vec3b pixel;
if (!capture.read(frame))
return;
Mat finalframe(frame.rows,frame.cols, CV_8UC3, Scalar(0, 0, 0));
for (int i = 0; i < frame.rows; i++)
for (int j = 0; j < frame.cols; j++)
{
pixel = frame.at<Vec3b>(Point(j, i));
finalframe.at<Vec3b>(Point(j, i)) = pixel;
}
imshow("Frame", finalframe);
keyboard = waitKey(30);
capture.release();
getchar();
}
但是,当我使用imshow()
显示第二张图像时,会显示一个空白的灰色图像。
现在,即使我不选择进行任何修改,当我尝试second = first;
时,我也面临类似的问题
似乎唯一有效的是first.copyTo(second);
为什么第二张图片拒绝做任何事情?