【OpenCV】画素値が取得できない??

公開日: : 最終更新日:2014/08/14 OpenCV

スポンサーリンク

IplImageに格納された画素値を利用してフィルター処理を行おうとしましたが、なぜか画素値が取得されませんでした。

IplImage *tmp = cvLoadImage("srcimg.jpg",CV_LOAD_IMAGE_GRAYSCALE);
int width = tmp->width;
int height = tmp->height;
IplImage *dst = cvCreateImage(cvSize(width,height),IPL_DEPTH_8U,1);
for(int y=0;y<height;y++)
{
	for(int x=0;x<width;x++)
	{
		int grey = (int)tmp->imageData[tmp->widthStep * y + x ];//全て0??
		if(grey<10)
		{
			dst->imageData[dst->widthStep * y + x ] = 255;
		}
		else
		{
			dst->imageData[dst->widthStep * y + x ] = 0;
		}
	}
}
cvSaveImage("dstimg.jpg",dst);

簡単な反転処理のつもりだったのですが途中の”grey”の値がすべて0になってしまってうまくいきませんでした。この場合だと真っ白な画像が出力されてしまっていました。

小一時間も悩んだ結果、キャストが駄目ということがわかりました。

IplImage *tmp = cvLoadImage("srcimg.jpg",CV_LOAD_IMAGE_GRAYSCALE);
int width = tmp->width;
int height = tmp->height;
IplImage *dst = cvCreateImage(cvSize(width,height),IPL_DEPTH_8U,1);
for(int y=0;y<height;y++)
{
	for(int x=0;x<width;x++)
	{
		unsigned char tmpgrey = tmp->imageData[tmp->widthStep * y + x ];
		int grey = (int)tmpgrey;
		if(grey<10)
		{
			dst->imageData[dst->widthStep * y + x ] = 255;
		}
		else
		{
			dst->imageData[dst->widthStep * y + x ] = 0;
		}
	}
}
cvSaveImage("dstimg.jpg",dst);

一回はさむとうまくいきました。

スポンサーリンク
  • このエントリーをはてなブックマークに追加

関連記事

WordPressサイトのSSL対応(HTTPS化)手順のまとめ【さくらサーバー】

先週頃にこのサイトをSSL対応しましたのでその流れについてまとめておき

【Google Charts】動的にグラフを更新する方法

はじめに Webサイト上でグラフを描こうと思った場合、いくつかのJa

体重変化量計算シミュレータ【ダイエット/肥満】

ツール本体 入力 カロリー入力 1日の余剰摂取/消費カロリー

おサイフケータイ対応ストレージ32GBのSIMフリースマホまとめ【2017年秋版】

はじめに SIMフリーの格安スマホのおサイフケータイ機能付きのもので

リクルート期間限定ポイントの有効な使い道

はじめに  先日クレジットカードの見直し活動の一環でポイント還元率の

初心者がお金を貯めるための節約・財テク手法まとめ【ポイント還元・投資・税金対策】

はじめに  最近なるべく節約しようと思い、お金周りに関して色々調べて

動画講座を効率的にキャプチャして復習する方法

はじめに  最近、動画媒体の講座などをたまに視聴しています。独学だと

→もっと見る

  • Author : ががんぼ
    プログラミングやWeb関係で気付いたことについてメモしていく予定。だいたいが備忘録ですが、自分でサンプルを作って動かしてみたりしています。
PAGE TOP ↑