OpenCVを使って、テキスト形式のヘッダーありのRAW画像(カラー)を、Cで書いたプログラムで開きたいのですが、
うまくいかず困っています。 “LoadRawImage”というWindowが起動しますが、真黒で何も表示されません。
RAW画像を開く関数myRawImageは以下のurlの「RAWデータの読み込みと表示」を参照させていただきました。(すみません、どうもありがとうございます。)
http://wiki.livedoor.jp/mikk_ni3_92/d/raw%a5%c7% …
画像サイズはわかっているので、bmpなどに変換せず、RAWのまま開きたいのですが、どこを直せばいいのでしょうか。
どなたかヒントでも教えていただけると大変助かります、どうぞよろしくお願い致します。
//test.cpp
#include <cv.h>
#include <highgui.h>
#include <iostream>
#include <fstream>
#include "raw_data_show.h"
int
main (int argc, char ** argv)=================
{
int x, y,i;
uchar p1[3], p2[3];
IplImage *img1, *img2, *cp_img;
img1 = myRawImage("D:\\My Pictures\\...\rawimage",500,500,3);
cvShowImage("Load RawImage",img1);
cvWaitKey(0);
==============================================
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
#include <iostream>
#include <fstream>
IplImage *myRawImage(char *filename, int w,int h,int channels)
{
if((channels != 3) && (channels != 1))
{
std::cerr << " channel is not 3 or 1\n";
return NULL;
}
std::fstream ifs(filename,std::ios::in|std::ios::binary);
if(!ifs.is_open())
{
return NULL;
}
CvMat *Mat = cvCreateMat(h,w,CV_8UC3);
ifs.read(reinterpret_cast<char*>(Mat->data.ptr),w*h*3);
ifs.close();
IplImage img_hdr;
IplImage *dst_img = cvGetImage (Mat, &img_hdr);
IplImage *clone = cvCloneImage(dst_img);//クローン作成
cvReleaseImage(&dst_img);
cvReleaseMat(&Mat);
if(channels == 3){
for (i = 0; i < size; i++) {
for (j = 0; j < size; j++) {
CvMat m;
float ret = 0.0;
float a[] = { float (j) / size, float (i) / size };
cvInitMatHeader (&m, 1, 2, CV_32FC1, a);
ret = svm.predict (&m);
switch ((int) ret) {
case 1:
rcolor = CV_RGB (100, 0, 0);
break;
case 2:
rcolor = CV_RGB (0, 100, 0);
break;
case 3:
rcolor = CV_RGB (0, 0, 100);
break;
}
cvSet2D (img, i, j, rcolor);
}
}
cvCvtColor(clone,clone,CV_RGBA2BGR);
return clone;
}
========================================================
No.1ベストアンサー
- 回答日時:
そのURLのRAWデータというのは、 R1バイト,G1バイト,B1バイトが画素数だけ単純に並んだバイナリーデータです
「テキスト形式のヘッダーありのRAW画像(カラー)」ではありません。
具体的なフォーマットが書いてないので、具体的にどうすればいいかなんてわかりません。
・ヘッダを読み込み→strtolやscanf系で数値へ
・ヘッダに合せてcvCreatMat
・画素のデータをscanf系かstrtol等で数値へ→cvMatに
という感じになるのでは
この回答への補足
すみません、テキスト形式というのはヘッダーファイルのことでした、書き方がまずくてすみません。
画像ファイルはURLのデータと同じバイナリーデータで、画像サイズと、32ビットであることが書かれています。
cvCreatMatで読み込んで開けるか、やってみます。
kmeeさん、いつもすぐにアドバイスくださって、ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# C++プログラミングコードにポリモーフィズムを取り入れ方を教えてください。 2 2023/06/09 11:17
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# 並列プログラミングのπ計算について 1 2022/07/16 22:30
- C言語・C++・C# C++初心者です stirng 2 2022/09/20 20:43
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
このQ&Aを見た人はこんなQ&Aも見ています
-
とっておきの「夜食」教えて下さい
真夜中に小腹がすいたときにこっそり作るメニュー、こっそり家を抜け出して食べに行くお店… 人には言えない、けど自慢したい、そんなあなたの「とっておきの夜食」を教えて下さい。
-
一回も披露したことのない豆知識
あなたの「一回も披露したことのない豆知識」を教えてください。 「そうなんだね」と「確かに披露する場所ないね」で評価します。
-
とっておきの手土産を教えて
お呼ばれの時や、ちょっとした頂き物のお礼にと何かと必要なのに 自分のセレクトだとついマンネリ化してしまう手土産。 ¥5,000以内で手土産を用意するとしたらあなたは何を用意しますか??
-
許せない心理テスト
私は「あなたの目の前にケーキがあります。ろうそくは何本刺さっていますか」と言われ「12本」と答えたら「ろうそくの数はあなたが好きな人の数です」と言われ浮気者扱いされたことをいまだに根に持っています。
-
うちのカレーにはこれが入ってる!って食材ありますか?
カレーって同じルーから作っても、家庭によって入っているものや味が微妙に違っていて面白いですよね! 「我が家のカレーにはこれが入ってるよ!」 という食材や調味料はありますか?
-
OpenCVで32bit ヘッダ無しRaw画像表示
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
std::wstringのメモリリークに...
-
C++でのeの近似値の求め方
-
JPEGやPNGが読めるLoadImage関数
-
boost::serializationについて
-
#define中の#のエスケープ
-
wstringの主力
-
vectorのイテレータを大小比較...
-
clock関数のコンパイルエラーで
-
構造体配列のvectorへの変換と...
-
テイラー展開とその精度について
-
switch文のエラーについて
-
C++ 数値データファイルから2次...
-
なぜ、C++の標準ヘッダをインク...
-
enumの値から定義名を文字列化...
-
C言語のポインターで詰まっている
-
c++ ファイルからの複素数の読...
-
c++ ファイルの列挙ができない(...
-
コーディング
-
OpenCVでRAW画像(カラー)を開...
-
UNICODE環境でCStringをstd::st...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
switch文のエラーについて
-
構文エラーが出ているのですが...
-
VC++で文字列から任意の文字を...
-
#defineの使い方について
-
enumの値から定義名を文字列化...
-
空ENTERの判別
-
C++でShowCursorを使いたい。
-
C++での <iostream.h>と<iostre...
-
std::wstringのメモリリークに...
-
VS2019でofstreamが未定義になる
-
wstringの主力
-
JPEGやPNGが読めるLoadImage関数
-
#include "fstream.h"
-
なぜ、C++の標準ヘッダをインク...
-
C言語のエラーを修正したい
-
C言語のポインターで詰まっている
-
#define中の#のエスケープ
-
リモートデスクトップの接続元I...
-
【C++】複素数で配列を使いたい
-
VHDLのsignedとunsignedの違いは?
おすすめ情報