
プログラムをPCでやる前にある程度、何かに書いてからやっているのですが、画像の1部分の色を変えたいのですが、例えば画像の左半分を黒くした画像を生成したい場合は,(一般的には,輝度値は0~255までの整数(8ビット)か,または0~65535までの整数(16ビット)により表される)
*printfとscanfを使用するためにインクルードする*/
#include<stdio.h>
/*ビットマップ画像を扱うためのヘッダ*/
#include<Dll_BMP_C.h>
//画像ファイル名最大長(バイト)
#define NAME_SIZE 101
int main(void)
{
int j,k;
/* nWidth:画像の幅、nHeight:画像の高さ、nVal:輝度値*/
int nWidth,nHeight;
/*pcFileName:画像ファイル名を保存する配列*/
char pcFileName[NAME_SIZE];
/*pBmpOrig:読み込んだ画像へのポインタ
pBmpCopy:複製した画像へのポインタ*/
DllBmp*pBmpOrig,*pBmpCopy;
/*読み込む画像のファイル名を指定する*/
printf(“読み込む画像”);
scanf(“%s”,pcFileName);
/*画像を読み込みメモリに保存する
読み込みに失敗したら実行を中止する*/
pBmpOrig=DllBmpReadImage(pcFileName);
if(pBmpOrig==NULL)
{
printf(“画像の読み込みに失敗! 実行を中止します\n”);
exit(1);
}
/*読み込んだ画像のヘッダ情報を表示する*/
DllBmpShowHeader(pBmpOrig);
/*読み込んだ画像の大きさを得る*/
nWidth=DllBmpGetWidth(pBmpOrig);
nHeight= DllBmpGetHeight (pBmpOrig);
/* 画像を生成する */
for(j = 0; j < nHeight; j++)
for(k = 0; k < nWidth; k++)
{
DllBmpSetPixelValueR(pBmpOrig, j, k, 255);
DllBmpSetPixelValueG(pBmpOrig, j, k, 255);
DllBmpSetPixelValueB(pBmpOrig, j, k, 255);
}
/*保存する画像のファイル名を指定する*/
printf(“保存する画像”);
scanf(“%s”,pcFileName);
/*画像を保存する
保存に失敗したら実行を中止する*/
if(!DllBmpWriteImage(pcFileName,pBmpOrig));
{
printf(“画像の保存に失敗! 実行に中止します”);
exit(1);
}
/*画像をメモリから消去する*/
DllBmpDleteImage(pBmpOrig);
return 0;
}
画像の輝度値を操作するプログラムをやっているのですが、画像の左半分を黒くした画像を生成する場合は、
DllBmpSetPixelValueR(pBmpOrig, j, k, 255);
DllBmpSetPixelValueG(pBmpOrig, j, k, 255);
DllBmpSetPixelValueB(pBmpOrig, j, k, 255);
の部分のRが赤、Gが緑、Bが青なんですが、その値をすべて0にすればいいんでしょうか?もしくはあらたに条件式を作るべきなのでしょうか??そして画像の左半分を黒くしたい場合は、
for(j = 0; j < nHeight; j++)
for(k = 0; k < nWidth; k++)
の部分のj < nHeightをj < nHeight/2にしたらなるでしょうか??
この場合だと上半分になってしまうでしょうか??
PCがまだ使えないのでルーズリーフにいろいろ試行錯誤して書いてるのですが、他に何かヒントがあればよろしくお願いします。。。。。
すみませんがお願いします。
No.1ベストアンサー
- 回答日時:
>>j < nHeightをj < nHeight/2にしたらなるでしょうか??
この場合だと上半分になってしまうでしょうか??
はい。左半分の場合はnWidth/2のハズです
一応参考と言う事で(過信してはいけません)。
/*幅の半分を計算しておく*/
const int nHalf = nWidth / 2;
/*輝度用の変数*/
int nKido = 0;
for(j = 0; j < nHeight; j++)
for(k = 0; k < nWidth; k++)
{
/*kはnWidthの半分以下なら輝度は0、それ以上なら輝度は255*/
nKido = (nHalf <= k) ? 0 : 255;
/*着色?*/
DllBmpSetPixelValueR(pBmpOrig, j, k, nKido);
DllBmpSetPixelValueG(pBmpOrig, j, k, nKido);
DllBmpSetPixelValueB(pBmpOrig, j, k, nKido);
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- HTML・CSS トリミングで表示した画像をクリックで元どおりにしたい 3 2022/12/16 18:49
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- C言語・C++・C# C言語の質問です。バイナリ形式で保存されたWindows Bitmap形式の画像ファイルを読み込み、 3 2023/07/19 14:58
- WordPress(ワードプレス) ホームページの画像が入れ替わらない 3 2022/12/24 16:00
- Excel(エクセル) EXCELマクロでandroidタブレットから取りんだJPEGファイルをうまくセルに貼り付けられない 2 2022/07/31 15:03
- YouTube ユーチューブへの動画投稿にサムネイルを付ける方法は? 1 2022/07/21 23:45
- フリーソフト 倍率自動調整して全画面表示できるフリーの画像ビューアー 1 2023/08/24 10:55
- PHP 掲示板を作成しておりアップロードファイルとメッセージを並べたいので、アドバイスお願い致します 2 2023/07/17 21:01
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UWSCでループ処理がうまくいき...
-
背景画像の繰り返しについて
-
画像のピクセルデータの取得
-
VC++6.0でGDI+利用してメモリリ...
-
【EXCEL VBA】ダブルクリックで...
-
VBAのユーザーフォームのイメー...
-
HTMLで画像をポップアップで表...
-
VBA シート毎に画像挿入
-
スマホでサイトの画像を長押し→...
-
Jimdoで画像をポップアップ表示...
-
gif 画像上の ボタンに リン...
-
UWCSでのランダムクリック入力...
-
画像処理したBitmapをピクチャ...
-
PowerPoint VBA で画像の鮮明度...
-
DXライブラリの、マウスを使っ...
-
openCVを用いた手形認識
-
raspberry pi でプログラムを開...
-
画像の解像度をかえるには?
-
サムネイル画像にマウスオーバ...
-
マスク画像の自動作成
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel ユーザーフォームで表示...
-
背景画像の繰り返しについて
-
uwcs のマクロで画像認識をして...
-
UWSC 画像判定と条件分岐について
-
【EXCEL VBA】ダブルクリックで...
-
UWSCの画像認識と条件分岐につ...
-
画像のビット数を変更する方法
-
jqueryスライダーを2段でスライ...
-
vb.net 画像の透過について
-
「using Windows」でエラーが出る
-
UWSC 画像認識で条件分岐
-
gif 画像上の ボタンに リン...
-
UWCSでのランダムクリック入力...
-
画像処理したBitmapをピクチャ...
-
EXCEL VBA 複数のImageコントロ...
-
UWSCでループ処理がうまくいき...
-
VBAのユーザーフォームのイメー...
-
UWSC「画像が無い場合」
-
画像のピクセルデータの取得
-
UWSCの色判定
おすすめ情報