質問: cvCreateImage( cvSize(img->width,img->height), IPL_DEPTH_16S, 1 ); printf("4"); sobel(200); //呼び出し //画像表示窓の準備 cvNamedWindow("sobel", 1); printf("7"); // 結果を表示 cvShowImage("sobel",edge_sobel); printf("8"); // 終了処理 cvWaitKey(0); cvReleaseImage(&gray_sobel); cvReleaseImage(&edgeX); cvReleaseImage(&edgeY); cvReleaseImage(&edge_sobel); cvDestroyWindow("入力画像"); cvDestroyWindow("平滑化"); cvDestroyWindow("sobel"); printf("9"); return 0; } /*-----------------------------------------------------------------------------------*/ またこういうように単純に閾値を代入すると、ソーベルオペレータが使えない。。。 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/a8d7bf65748a1670c3d0b6220b2dd5db.png)
回答: こんにちは。 `sobel(int t)`関数がi=0の最初のループで単純にreturn t;しているようです。 でも、入力画像が表示されないのは、これが原因ではないですね。 airplane-gray.bmpは、ビルドしたプログラムのexeファイルと同じフォルダにおいてますか? 恐らく、これを読み出せてないです。 例えば、`C:\airplane-gray.bmp`へコピーしておき、`img = cvLoadImage( "C:\\airplane-gray.bmp");`としてみたらどうなりますか?(`\\`に注意下さい。""の中では`\\`と書いて初めて`\`へ展開されます。)