テンプレートマッチングというプログラムをやってますが、テンプレート画像にボックスカウンティング処理を行い、フラクタル次元を求めようという進み方で行こうと思って、プログラムを作ってみました。でもコンパイルするとエラーが出てきちゃいました。
int main(int argc, char* argv[])
{
int x,y;
int r,g,b;
int wh=0,BC2=0,BC3=0,BC4=0,BC5=0,BC6=0;
float p;
char* filename = argc == 2 ? argv[1] : (char*) "apple.bmp";
if((src = cvLoadImage(filename,1)) == 0)
return -1;
IplImage *grayimg = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U,1);
IplImage *edgeimg = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U,1);
IplImage *img = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U,3);
IplImage *his = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U,1);
cvCvtColor(src,grayimg,CV_BGR2GRAY);
cvEqualizeHist(grayimg,his);
cvCanny (his,edgeimg,50,200,3);
cvCvtColor (edgeimg,img,CV_GRAY2BGR);
for(y=0;y< img->height;y++){
for(x=0;x< img->width ;x++){
getpixel(img,x,y,&r,&g,&b);
if(r == white){
wh++;
}
}
}
p = (wh*100)/ (img->height * img->width);
printf("height = %d width = %d\n",img->height,img->width);
printf("white pixel = %d(%3.2f %%)\n",wh, p);
(ここで x,y=1 x,y=2 x,y=4 x,y=5 と x,y=6 ももちろん入れてます)
printf("log10(%d)/log10(2)=%1.4f\n",BC2,(log10(BC2)/log10 (2)));
printf("log10(%d)/log10(3)=%1.4f\n",BC3,(log10(BC3)/log10 (3)));
(ここでlog10(6)までの続きがあります)
printf("((log10(%d)-log10(%d))/(log10(2)-log10(3)))=%1.4f\n",BC2,BC3,(log10(BC2)-log10(BC3))/(log10(2)-log10(3)));
(ここでlog10(6)までの続きがあります)
double fd,fd23,fd34,fd24,fd25,fd35,fd45,fd26,fd36,fd46,fd56;
fd23 = -(log10(BC2)-log10(BC3))/(log10(2)-log10(3));
(ここでlog10(6)までの続きがあります)
fd = ((fd23+fd34+fd24+fd25+fd35+fd45+fd26+fd36+fd46+fd56)/10);
printf("フラクタル次元は%1.4fです\n",fd);
。
。
ここからはopenCVの関数が使ってます。
。
。
プログラムはこのようなんですが、コンパイルするとこのエラーが出てきました。
jikken2.cpp(528) : error C2668: 'log10' : ambiguous call to overloaded function
c:\program files\microsoft visual studio 8\vc\include\math.h(569): could be 'long double log10(long double)'
c:\program files\microsoft visual studio 8\vc\include\math.h(521): or 'float log10(float)'
c:\program files\microsoft visual studio 8\vc\include\math.h(122): or 'double log10(double)'
while trying to match the argument list '(int)'
誰かお分かりになる方々をぜひぜひお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
これは、ソースコードを見る限りC++じゃなくてC言語のソースコードですね。
C++のオーバーロードのエラーメッセージが分からないの文法理解レベルでは、素直にC言語オプションでコンパイルしたほうが良いと思います。それとエラーの原因であるデータ型の適当さは今のうちに直しましょう。パラメータを暗黙のデータ型変換にまかせたりせず、ちゃんと型を合わせて関数を使うクセをつけた方が良いですよ。思わぬバグで後で苦労すると思います(無闇にキャストでごまかさないように)。
No.1
- 回答日時:
log10に限らず、<cmath>で宣言される関数の大部分は、float、double、long doubleについて多重定義されています。
また、<complex>をインクルードすれば、そのうちの多くの関数がcomplexクラステンプレートについても多重定義されます。そのため、int型の実引数を渡した場合には、多重定義がうまく解決できなくてエラーが発生します。
> jikken2.cpp(528) : error C2668: 'log10' : ambiguous call to overloaded function
このエラーメッセージが、そのものズバリの指摘をしています。
もし英語が読めないのなら、無理をせず、日本語版を使うことをお勧めします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 並列プログラミングのπ計算について 1 2022/07/16 22:30
- C言語・C++・C# C言語のファイル入力が分かりません 2 2022/05/22 06:35
- 数学 微分方程式の積分定数について 5 2023/07/13 08:39
- 数学 回答者どもがなかなか答えられないようなので、考えてみました。 ∫[0,π/2]log(sinx)/( 4 2022/08/31 16:30
- 数学 log底10真数1/75 ただし、 log底10真数2=0.3 log底10真数3=0.5とする 式 2 2022/05/30 22:51
- 数学 写真の数学の質問です。 常用対数ってのがいまいちわかりません。 log(10)3が、なぜlog(10 5 2023/06/10 14:07
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/06 13:01
- 数学 n乗はどうなったのでしょうか 1 2023/01/31 19:26
- Visual Basic(VBA) Excelのマクロについて教えてください。 1 2023/03/12 12:16
- 数学 対数関数のグラフ y=log(2)2(x+1)のグラフを書け 模範解答は「1+log(2)(x+1) 2 2023/07/08 01:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラムでの数字につく”f”の...
-
C 開放してるのにエラー(doubl...
-
C言語 関数プロトタイプ宣言の...
-
数値を指数部と仮数部に分離したい
-
学校の課題で2次方程式のプログ...
-
関数におけるif文とreturn文に...
-
C言語を実行すると-infが出てき...
-
float型とdouble型の変数の違い...
-
C言語で表記についの質問です
-
指数の表示
-
2分法で方程式の複数の解を自...
-
doubleは常に%lfとするべきなのか
-
物体が往復する動きを作りたい
-
C言語で内積、、、わかりません。
-
c言語のコンパイルエラー canno...
-
C言語のpow関数の不具合
-
処理時間計測
-
float?数字の後にLがつくもの
-
「割り算」 と 「分数の掛け算」
-
C++標準ライブラリィーのcomple...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラムでの数字につく”f”の...
-
float型とdouble型の変数の違い...
-
doubleの変数にintとintの割り...
-
C言語を実行すると-infが出てき...
-
C 開放してるのにエラー(doubl...
-
至急です! マクロ定義で #defi...
-
c言語で、繰り返し文の中で、0....
-
関数におけるif文とreturn文に...
-
C言語 関数プロトタイプ宣言の...
-
C言語初心者 構造体 課題について
-
C言語の型による処理速度の違い
-
Cで3乗根を求める方法
-
C言語で-23乗を取り扱うには
-
2分法で方程式の複数の解を自...
-
doubleは常に%lfとするべきなのか
-
c言語のコンパイルエラー canno...
-
C言語で直角三角形の斜辺を求め...
-
C言語のプログラムで#include<m...
-
int とdoubleの比較
-
C++で外積
おすすめ情報