私はOpenCVを使ってC++で最初のプログラムを書いています。私はプロジェクトのセットを表現したいと思います(私のプロジェクトには保存されています。 Lは、X(Y)方向の画素数である長さLXLのベクトルとして ここに私のコードです:。複数の画像をロード、表示、変換する
#include "stdafx.h"
#include "cv.h"
#include "highgui.h"
using namespace std;
int main()
{
//load images
for(int i=1; i<=25; i++)
{
char filename[50];
sprintf(filename, "brain_mri_%d.jpg", i);
IplImage *img=cvLoadImage(filename, CV_LOAD_IMAGE_GRAYSCALE);
if (!img)
{
printf("Error: Image not found.\n");
return 2; //error : not found image
}
cvNamedWindow("Projet Image", CV_WINDOW_AUTOSIZE);// create a window
IplImage *img2=cvCloneImage(img); //clone img
cvShowImage("Projet Image", img2); // display the image in a window
cvWaitKey(0); //attendre touche
cvDestroyWindow("Projet Image"); // destroy the window
cvReleaseImage(&img); // memory
return 0; //finish with success
//convert IplImage -> Matrix
int height = img->height;
int width = img->width;
CvMat *mat = cvCreateMat(height,width,CV_32FC3);
//convert Matrix -> Vector
//CvMat row_header, *row;
//row = cvReshape(mat, &row_header, 0, 1);
CvMat vector_header;
cvReshape(img, &vector_header, 0, 1);
//check the height and width of vector_header
if(vector_header.height != 1)
{
fprintf(stderr, "vector_header's height is %d\n", vector_header.height);
}
if(vector_header.width != width*height)
{
fprintf(stderr, "vector_header's width is %d\n", vector_header.width);
}
}
}
私はミスを犯しているはずですが、私はどこ:( I知りません PS私の悪い英語を間違えて...
私は恐ろしいと思うかもしれませんが、[C++ API](http://opencv.itseez.com/modules/refman.html)を使用してみませんか?使用可能なチュートリアルのほとんどはC APIをベースにしていますが、多くのポインタを使用しています。間違いを見つけにくい場所がたくさんあります。もしあなたがC++で書いているのであれば、完全なC++を手に入れてください:) – morynicz
@Link +1 C++プログラムでCインタフェースを使用する理由はほとんどありませんが、 'iostream'で' cstdio'を使うことはありません。 –
@ Ivoa70エラーはどういう意味ですか?例えば、画像を 'cvReleaseImage'していないことがわかりますが、それがあなたのエラーの原因になっているかどうかわかりません。 @Link、私はあなた自身の疑問に答えると思います。ほとんどのチュートリアルはC APIをベースにしていますが、これはすでに新しいユーザーにとっては大変なことです。 C++ APIを使用する本当に良いチュートリアルを教えてください。 – dantswain