너무 간단해서 아무도 만들지 않은건지.. OpenCV Document에서 내가 못찾는것인지.. mil 에서는 MimTranslate이라는 함수를 썻었는데..
아래처럼 직접 이동 시켜주었다.
[-] Collapse
bool Trans4way(Mat matSrc, int nStep, Mat& matLeft, Mat& matRight, Mat& matUp, Mat& matDown)
{
int nWidth = matSrc.cols;
int nHeight = matSrc.rows;
matLeft = Mat::zeros(Size(nWidth,nHeight),CV_8UC1);
matRight = Mat::zeros(Size(nWidth,nHeight),CV_8UC1);
matUp = Mat::zeros(Size(nWidth,nHeight),CV_8UC1);
matDown = Mat::zeros(Size(nWidth,nHeight),CV_8UC1);
for(int y = 0;y<nHeight;y++)
{
for(int x = 0;x<nWidth;x++)
{
if(x-nStep>=0)
matLeft.at<uchar>(Point(x-nStep,y)) = matSrc.at<uchar>(Point(x,y));
if(x+nStep<nWidth)
matRight.at<uchar>(Point(x+nStep,y)) = matSrc.at<uchar>(Point(x,y));
if(y-nStep>=0)
matUp.at<uchar>(Point(x,y-nStep)) = matSrc.at<uchar>(Point(x,y));
if(y+nStep<nHeight)
matDown.at<uchar>(Point(x,y+nStep)) = matSrc.at<uchar>(Point(x,y));
}
}
return true;
}
{
int nWidth = matSrc.cols;
int nHeight = matSrc.rows;
matLeft = Mat::zeros(Size(nWidth,nHeight),CV_8UC1);
matRight = Mat::zeros(Size(nWidth,nHeight),CV_8UC1);
matUp = Mat::zeros(Size(nWidth,nHeight),CV_8UC1);
matDown = Mat::zeros(Size(nWidth,nHeight),CV_8UC1);
for(int y = 0;y<nHeight;y++)
{
for(int x = 0;x<nWidth;x++)
{
if(x-nStep>=0)
matLeft.at<uchar>(Point(x-nStep,y)) = matSrc.at<uchar>(Point(x,y));
if(x+nStep<nWidth)
matRight.at<uchar>(Point(x+nStep,y)) = matSrc.at<uchar>(Point(x,y));
if(y-nStep>=0)
matUp.at<uchar>(Point(x,y-nStep)) = matSrc.at<uchar>(Point(x,y));
if(y+nStep<nHeight)
matDown.at<uchar>(Point(x,y+nStep)) = matSrc.at<uchar>(Point(x,y));
}
}
return true;
}
댓글 없음:
댓글 쓰기