我正在视频项目上进行图像填充,正在将屏幕(ROI)上的图像部分选择为矩形,并且将图像的该部分进行图像填充。现在,我想从实时视频中保存五个前一帧(我可以做到),并在五个不同的阵列上保存五个帧/图像的ROI的像素值。我将使用该数组生成背景并删除前景对象。
谁知道我如何在选定区域的数组中保存像素值?
提前致谢。
最佳答案
opencv的C++接口(interface)使用cv::Mat来存储图像像素。
以下代码显示了如何声明矩阵B“指向”矩阵A的ROI。
矩阵是图像。 ROI是一个矩形(x = 0; t = 0; width = 0; height = 100)。使用opencv highgui函数保存图像。
cv::Mat A(640,480,CV_8C3);
cv::Rect rect(0,0,100,100);
cv::Mat B = A(rect);
cv::imwrite("my_roi.pbg",B);
如果您需要从视频中读取帧,请使用
cv::VideoCapture cap
和cap >> frame
抓取并检索每个图像作为cv::Mat
。如果要使用视频文件转到cv::VideoCapture::set(..,CV_FRAME_MSEC)
中的其他位置,请阅读manual。关于image - 在openCV中访问所选ROW的像素值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9448975/