【发布时间】:2016-03-19 06:11:20
【问题描述】:
我有一张图片i1。我应该创建另一个大小为(image.rows*3、image.cols*3)的 Mat m1。
在m1 中,我应该按以下方式填充像素值。 (请看图片):
这是我的代码-
#include <highgui.h>
#include "opencv2/opencv.hpp"
#include <fstream>
using namespace cv;
static Mat NeurMap1, NeurMap2, NeurMap3, frame, hsv_Frame;
std::ofstream myfile;
void InitializeNeurMap(cv::Mat Channel[3])
{
int i=0,j=0,m_i=0,m_j=0, t1=0, t2=0;
for(i=0; i < frame.rows; i++)
{
for(j=0;j < frame.cols;j++)
{
t1= i*n+1; t2 = j*n+1;
for(m_i=t1-1; m_i <= t1+1;m_i++)
{
for(m_j=t2-1; m_j <= t2+1; m_j++)
{
NeurMap1.at<uchar>(m_i, m_j)= frame.at<uchar>(i,j);
}
}
}
}
std::cout<<m_j;
myfile<<frame;
}
int main()
{
myfile.open("NeurMaptext.txt");
String filename="BootStrap/b%05d.bmp";// sequence of frames are read
VideoCapture cap(filename);
if(!cap.isOpened()) // check if we succeeded
return -1;
namedWindow("edges",1);
//namedWindow("frames",1);
Mat Channel[3];
cap>>frame;
NeurMap1 = Mat::zeros(frame.rows*n, frame.cols*n, frame.type());
InitializeNeurMap(Channel);
imshow("edges",NeurMap1);waitKey(33);
for(;;)
{
cap>>frame;
if(frame.empty())
break;
}
system("pause");
return 0;
}
输入图像为 RGB[160*120]。为什么我没有得到上面链接中给出的输出图像中的列?
【问题讨论】:
-
您要调整图片大小吗?
-
没有。我需要基于神经网络执行背景减法。我正在根据本文cvprlab.uniparthenope.it/publications/… 中给出的框架初始化神经元图
-
循环在InitializeNeurMap()函数中作用于单通道图像,所以要么改变循环,要么将单通道图像传递给InitializeNeurMap()。
标签: c++ opencv image-processing background-subtraction