2

いくつかの基本を学ぼうとしていますが、エラーが発生し続けます。

cv::Mat のサイズを変更しようとしています

画像を読み込んでいない理由を明確にするために編集します。外部ファイルにアクセスせずにテストしようとしています。

ただし、コード内にint x = M.depth();0 を入力すると、

cv::Mat M(2,2, CV_8UC3, cv::Scalar(0,0,255));
scale = 2;
cv::Size myImageSize;
myImageSize.height = M.rows;
myImageSize.width  = M.cols;

cv::Mat ImgCopy = cvCreateImage(myImageSize, M.depth(), M.channels());
..
cv::resize(M, ImgCopy, myImageSize, 0, 0, CV_INTER_LINEAR);

行 cvCreateImage でエラーが発生しています

Input image depth is not supported by function (Unsupported format) in unknown functio, file... \modules\core\src\array.cpp...

他の値 (CV_32F...) を試してみましたが、同じエラーが発生します。

助けてください !

4

2 に答える 2

6

cvCreateImage()は C API で使用するためのもので、 を返しますIplImage*。を初期化するcv::Matには、適切なコンストラクターを使用します。

cv::Mat ImgCopy(M.size(), M.type());

新しい を作成してメモリを割り当てる最も簡潔な方法cv::Matです。

ただし、cv::resize()さらに簡単になります。イメージを宣言するだけです

cv::Mat ImgCopy

cv::resize()正しい次元と型の自動計算を可能にする引数。最後の 3 つのパラメーターは、デフォルトから変更しないため、指定する必要はありません。

cv::resize(M, ImgCopy, myImageSize);
于 2013-05-28T19:10:29.550 に答える
1

このコードを試してください:

using namespace cv;
using namespace std;
int main( int argc, char** argv )
 {
IplImage *src,*dst;
src=cvLoadImage("img.png");
cvNamedWindow("SRC", CV_WINDOW_AUTOSIZE);
cvNamedWindow("DST", CV_WINDOW_AUTOSIZE);


 dst = cvCreateImage(cvSize(500,500),src->depth,src->nChannels);
cvResize(src,dst);


cvShowImage("SRC",src);
cvShowImage("DST",dst);


cvWaitKey(0);
cvDestroyWindow("SRC");
cvDestroyWindow("DST");
cvReleaseImage(&dst);
cvReleaseImage(&src);

return 0;
}
于 2013-05-28T19:02:43.243 に答える