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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
新参者

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

#1

投稿記事 by 新参者 » 15年前

突然ですが困っているので質問させていただきます。
今画像を取り込んでそれを二値化するプログラムを作っているのですが

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

この行に対して

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

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

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

アバター
bitter_fox
記事: 607
登録日時: 15年前
住所: 大阪府

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

#2

投稿記事 by bitter_fox » 15年前

コード:

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

コード:

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

アバター
asd
記事: 319
登録日時: 15年前

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

#3

投稿記事 by asd » 15年前

コード:

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に修正
Advanced Supporting Developer
無理やりこじつけ(ぉ

新参者

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

#4

投稿記事 by 新参者 » 15年前

ありがとうございます!
答えていただいたものを参考に組み直したところ無事に動きました

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

閉鎖

“C言語何でも質問掲示板” へ戻る