//OpenCV Array로 Mat를 만들 경우, 형식은 call by value 같지만, 실제로는 call by reference
using namespace cv;
class Ckernel
{
public:
Mat m_kernel;
Ckernel();
};
Ckernel::Ckernel()
{
float m_Arr[9] = {1,1,1,1,1,1,1,1,1};
//m_Arr가 delete되면 m_kernel의 data값도 delete된다.
m_kernel = Mat(3,13,CV_32F,m_Arr);
}
int _tmain(int argc, _TCHAR* argv[])
{
Mat& img = imread("temp.jpg",CV_LOAD_IMAGE_GRAYSCALE);
Mat dst;
Ckernel kernel;
//kernel의 m_kernel의 data는 이미 delete된 상태
filter2D(img,dst,img.depth(),kernel.m_kernel,Point(1,1));
//이미지가 black이 된다.
imwrite("result.jpg",dst);
return 0;
}
using namespace cv;
class Ckernel
{
public:
Mat m_kernel;
Ckernel();
};
Ckernel::Ckernel()
{
float m_Arr[9] = {1,1,1,1,1,1,1,1,1};
//m_Arr가 delete되면 m_kernel의 data값도 delete된다.
m_kernel = Mat(3,13,CV_32F,m_Arr);
}
int _tmain(int argc, _TCHAR* argv[])
{
Mat& img = imread("temp.jpg",CV_LOAD_IMAGE_GRAYSCALE);
Mat dst;
Ckernel kernel;
//kernel의 m_kernel의 data는 이미 delete된 상태
filter2D(img,dst,img.depth(),kernel.m_kernel,Point(1,1));
//이미지가 black이 된다.
imwrite("result.jpg",dst);
return 0;
}
댓글 없음:
댓글 쓰기