IplImage* img = cvLoadImage("something.jpg");
IplImage* src = cvLoadImage("src.jpg");
cvSub(src, img, img);
ただし、元の画像のサイズは とは異なりimg
ます。
サイズを変更するopencv関数はありますimg
か?
IplImage* img = cvLoadImage("something.jpg");
IplImage* src = cvLoadImage("src.jpg");
cvSub(src, img, img);
ただし、元の画像のサイズは とは異なりimg
ます。
サイズを変更するopencv関数はありますimg
か?
使用できますcvResize
。または、C++ インターフェイスを (たとえば、cv::Mat
の代わりにIplImage
とのcv::imread
代わりにcvLoadImage
) 使用cv::resize
してから、メモリの割り当てと割り当て解除自体を処理する which を使用することをお勧めします。
必要な 2 つの関数は、次のドキュメントに記載されています。
要するに:
// Load images in the C++ format
cv::Mat img = cv::imread("something.jpg");
cv::Mat src = cv::imread("src.jpg");
// Resize src so that is has the same size as img
cv::resize(src, src, img.size());
そして、古い完全に廃止された IplImage* クラスの使用をやめてください。
参考までに、同等のpythonは次のとおりです。
imageBuffer = cv.LoadImage( strSrc )
nW = new X size
nH = new Y size
smallerImage = cv.CreateImage( (nH, nW), imageBuffer.depth, imageBuffer.nChannels )
cv.Resize( imageBuffer, smallerImage , interpolation=cv.CV_INTER_CUBIC )
cv.SaveImage( strDst, smallerImage )
次のような便利な関数を作成します。
IplImage* img_resize(IplImage* src_img, int new_width,int new_height)
{
IplImage* des_img;
des_img=cvCreateImage(cvSize(new_width,new_height),src_img->depth,src_img->nChannels);
cvResize(src_img,des_img,CV_INTER_LINEAR);
return des_img;
}
あなたが使用することができCvInvoke.Resize
ますEmgu.CV 3.0
例えば
CvInvoke.Resize(inputImage, outputImage, new System.Drawing.Size(100, 100), 0, 0, Inter.Cubic);
詳細はこちら