ページ 11

二値化プログラムのエラー

Posted: 2011年1月19日(水) 15:32
by 新参者
突然ですが困っているので質問させていただきます。
今画像を取り込んでそれを二値化するプログラムを作っているのですが

w_data = (char *)malloc(sizeof(char *)WITTH*WITTH);

この行に対して

error C2440: '=' : 'char *' から 'unsigned char *' に変換することはできません。(新しい動作 ; ヘルプを参照)
指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。

というエラーが出ます。
調べてみても解決方法が見つからなかったので教えていただけたら幸いです。

Microsoft Visual C++ 6.0を使っています。
よろしくお願いします。

Re: 二値化プログラムのエラー

Posted: 2011年1月19日(水) 15:37
by bitter_fox

コード:

w_data = (char *)malloc(sizeof(char *)WITTH*WITTH);
sizeof(char*)の*の位置が間違ってるように見えますが・・・

コード:

w_data = (char *)malloc(sizeof(char)*WITTH*WITTH);
こうではないでしょうか??

Re: 二値化プログラムのエラー

Posted: 2011年1月19日(水) 16:14
by asd

コード:

w_data = (char *)malloc(sizeof(char *)WITTH*WITTH);
既にbitter_foxさんが指摘していることに加え、エラーメッセージからするとw_dataがunsigned char *型ではないでしょうか?

コード:

w_data = (unsigned char *)malloc(sizeof(unsigned char) * WITTH * WITTH);
#細かいことですが画像処理とのことですので、引数のWITTHはWIDTH(幅)ではないでしょうか。
#さらに言うと、幅*高さの分の領域が必要になるので幅と高さが一致していない場合には問題になりそうです。
#上記を反映すると以下のようになるかと思います。

コード:

w_data = (unsigned char *)malloc(sizeof(unsigned char) * WIDTH * HEIGHT);
---
sizeofの引数もunsigned charに修正

Re: 二値化プログラムのエラー

Posted: 2011年1月27日(木) 10:03
by 新参者
ありがとうございます!
答えていただいたものを参考に組み直したところ無事に動きました

またお世話になるかもしれないです^^