麻野 なぎ(@AsanoNagi) の回答履歴
- C++の関数等を使った書き方
C++OpenCVで関数等を使ってプログラムをみやすくまとめたいのですが、教えていただけないでしょうか。 プログラムの内容はHSV変換をしています。 これをmain文より外に出したい場合どのような書き方をすればいいでしょうか。 返り値はHSVの3つがほしいです。 struct _HSV { int H; int S; int V; }HSV[2000][2000]; main(void){ 宣言 src_img = cvLoadImage (filename, CV_LOAD_IMAGE_COLOR); for(y = 0; y < src_img->height; y++) { for(x = 0; x < src_img->width; x++) { p[0] = src_img->imageData[src_img->widthStep * y + x * 3]; // B p[1] = src_img->imageData[src_img->widthStep * y + x * 3 + 1]; // G p[2] = src_img->imageData[src_img->widthStep * y + x * 3 + 2]; // R if (p[0] >= p[1] && p[0] >= p[2]) {max = p[0];} //Bがmax else if (p[1] >= p[0] && p[1] >= p[2]) {max = p[1];} //Gがmax else {max = p[2];} //Rがmax if (p[0] <= p[1] && p[0] <= p[2]) {min = p[0];} //Bがmin else if (p[1] <= p[0] && p[1] <= p[2]) {min = p[1];} //Gがmin else {min = p[2];} //Rがmin if(max==min){ HSV[y][x].H = 0; HSV[y][x].S = 0; HSV[y][x].V = p[0]; //R } else { if(max==p[2]){ //Rがmax HSV[y][x].H = 60 * (p[1]-p[0])/(max-min); } else if(max==p[1]) //Gがmax { HSV[y][x].H = 60 * (p[0]-p[2])/(max-min); HSV[y][x].H += 120; } else //Bがmax { HSV[y][x].H = 60 * (p[2]-p[1])/(max-min); HSV[y][x].H += 240; } if(HSV[y][x].H < 0) { HSV[y][x].H += 360; } } if(x % 60== 0){ fprintf(fp, "%d ,%d\n", HSV[y][x].H, HSV[y][x].S); } } } } 初歩的な質問ですみません。 できれば、関数以外でもこうすれば見やすい等ご指摘頂けると助かります。 よろしくお願いします。
- IF文で戻ることはできますか?(C++です)
例えば cin >> A; if(A > 100 || A <0 ){ cout << "MISS"; } とあったとします。 もし、MISS表示になってしまった後、またcinにもどるにはどうすればいいですか? 初歩的な質問ですみません。
- 荷重をニュートンで表現するのは変では?
最近は工学の分野で風圧荷重等をニュートン(N/m2)で表現しますが今一、ピンときません。 原因はニュートンとういう単位を日常では使わないからです。(例、肉1ニュートン100円) 日常:力(重量含む)の単位=kg (質量は日常では用いない) 物理:力(重量含む)の単位=N (質量の単位=kg) 物理と日常を統一するには日常の重さの単位をkgからNに(世界中で)変更する必要があるのですが、そこまで行うのでしょうか? やらないのなら工学の分野でも荷重はNよりkgの方が解かりやすいと思うのですがどうでしょうか?
- ベストアンサー
- 科学
- noname#133962
- 回答数14
- お勧めのマイコンボード
お勧めのマイコンボード教えてください。 マイコンを使って図のようなシステムを考えています。 物体を発射させ、物体がレーザーを横切った時を記録して、時間差を計測するというシステムです。クロックはマイコンからのものを考えています。 最初は物体の自由落下の測定から始めたいと考えています。 そこでマイコン初心者でも上記のシステムが構築できるような、できればやさしめのマイコンボード教えてください。(条件を満たせば学習キットで) マイコンボードには外部入力の出来る割り込みのポート、マイコンボード上には結果を見ることができる液晶がほしいと思っています。また、USBなどを通してパソコンとの通信が出来るもので。 回答お願いします。
- 荷重をニュートンで表現するのは変では?
最近は工学の分野で風圧荷重等をニュートン(N/m2)で表現しますが今一、ピンときません。 原因はニュートンとういう単位を日常では使わないからです。(例、肉1ニュートン100円) 日常:力(重量含む)の単位=kg (質量は日常では用いない) 物理:力(重量含む)の単位=N (質量の単位=kg) 物理と日常を統一するには日常の重さの単位をkgからNに(世界中で)変更する必要があるのですが、そこまで行うのでしょうか? やらないのなら工学の分野でも荷重はNよりkgの方が解かりやすいと思うのですがどうでしょうか?
- ベストアンサー
- 科学
- noname#133962
- 回答数14
- 処理負荷特定で考えられる要因について
元々他の人が作成したコードなのですが 元はXPで使用 その時はそういった現象が出ていないようにも思えますが 頻度の問題で気が付かなかったのかもしれません (現在も動いていますが特に問題が出ているということを聞いていません) 現在 Win7上のVC6(SP6)にて ini ファイルへの書き込み処理を行っている関数Aがあり それを関数Bからコールしています 関数の関係は下に書いたようなイメージになります その他複数スレッドなども存在し各種動作を行っています 問題なのは不定期に(頻度も少ない様ですが)関数Aの処理時間が 30秒以上かかることがあるようなのです(ファイルCのチェックにて確認) もちろん通常は0~1秒程度しかかかっていません なぜそのような現象が発生するのか要因がつかめずに悩んでいます (しかも30秒っていくらなんでもかかりすぎだろう と) 考えられる可能性がありましたら何でもいいので教えていただけないでしょうか 少しでも情報が欲しいので可能性・想像だけでも構いません (あまりにも現実離れした想像は困りますが) 関数B { ファイルCに処理開始時間保存 (普通のファイル書き込み処理 追加モード) 関数A ファイルCに処理終了時間保存 (普通のファイル書き込み処理 追加モード) } 関数A { 特定 INI ファイルへの書き込み 使っているのは APIや標準関数のみ sprintf ・ WritePrivateProfileString 関数 セクション・キー名など変えて 50回前後実行します(1つの ini ファイルです) } ウイルスバスターが動いている環境で 上記に類似したコードを動かしたときに 異常に処理負荷がかかったということは経験しています (多分ファイルオープンクローズを繰り返しているためかなと想像しています) ただしこの時は時々とかいう問題では無いためすぐにわかりました (上記現象は分かっているため)該当PC上ではウイルススキャンの類のソフトは インストールしていません 閉塞LAN構築下に存在しているPCとなります TCP/IP 通信 共有も行っているのでファイヤーフォールは無効にしています あまり関係ないと思いますが DI/Oボード増設を行っています その他については特殊な設定は行っていないと思っていただいて構わないと思います (既に十分特殊という話もあるかもしれません) 一つのファイルへのオープンクローズを一気に50回前後繰り返すという 作りもいまいちなのですが 既に駆動しているプログラム・ ini ファイルの操作の手軽さということでそのような作りになってしまっています 簡単に他の形に置き換えられるのであればそれでもかまわないのですが INIファイルの特定セクションや特定キーの一部データの更新という処置の為 自前でやるのにも現在躊躇している状態です -> こうすれば簡単に置き換えが可能だって話があればそういった情報でも構いません 全ファイル読み込んだうえでセクションやキーをチェック該当部分を 置き換え(バッファ操作)して最後に一括で書き込めばいい といったことは分かっています (それを自前でやってないのがini ファイルの操作の手軽で~~ということです) 悩んでる間に作っちまえ という話もあるもかもしれませんが (微妙な諸事情もあるので)あえてそこには触れないでください 他に必要な情報があれば必要に応じて追記させていただきます
- 処理負荷特定で考えられる要因について
元々他の人が作成したコードなのですが 元はXPで使用 その時はそういった現象が出ていないようにも思えますが 頻度の問題で気が付かなかったのかもしれません (現在も動いていますが特に問題が出ているということを聞いていません) 現在 Win7上のVC6(SP6)にて ini ファイルへの書き込み処理を行っている関数Aがあり それを関数Bからコールしています 関数の関係は下に書いたようなイメージになります その他複数スレッドなども存在し各種動作を行っています 問題なのは不定期に(頻度も少ない様ですが)関数Aの処理時間が 30秒以上かかることがあるようなのです(ファイルCのチェックにて確認) もちろん通常は0~1秒程度しかかかっていません なぜそのような現象が発生するのか要因がつかめずに悩んでいます (しかも30秒っていくらなんでもかかりすぎだろう と) 考えられる可能性がありましたら何でもいいので教えていただけないでしょうか 少しでも情報が欲しいので可能性・想像だけでも構いません (あまりにも現実離れした想像は困りますが) 関数B { ファイルCに処理開始時間保存 (普通のファイル書き込み処理 追加モード) 関数A ファイルCに処理終了時間保存 (普通のファイル書き込み処理 追加モード) } 関数A { 特定 INI ファイルへの書き込み 使っているのは APIや標準関数のみ sprintf ・ WritePrivateProfileString 関数 セクション・キー名など変えて 50回前後実行します(1つの ini ファイルです) } ウイルスバスターが動いている環境で 上記に類似したコードを動かしたときに 異常に処理負荷がかかったということは経験しています (多分ファイルオープンクローズを繰り返しているためかなと想像しています) ただしこの時は時々とかいう問題では無いためすぐにわかりました (上記現象は分かっているため)該当PC上ではウイルススキャンの類のソフトは インストールしていません 閉塞LAN構築下に存在しているPCとなります TCP/IP 通信 共有も行っているのでファイヤーフォールは無効にしています あまり関係ないと思いますが DI/Oボード増設を行っています その他については特殊な設定は行っていないと思っていただいて構わないと思います (既に十分特殊という話もあるかもしれません) 一つのファイルへのオープンクローズを一気に50回前後繰り返すという 作りもいまいちなのですが 既に駆動しているプログラム・ ini ファイルの操作の手軽さということでそのような作りになってしまっています 簡単に他の形に置き換えられるのであればそれでもかまわないのですが INIファイルの特定セクションや特定キーの一部データの更新という処置の為 自前でやるのにも現在躊躇している状態です -> こうすれば簡単に置き換えが可能だって話があればそういった情報でも構いません 全ファイル読み込んだうえでセクションやキーをチェック該当部分を 置き換え(バッファ操作)して最後に一括で書き込めばいい といったことは分かっています (それを自前でやってないのがini ファイルの操作の手軽で~~ということです) 悩んでる間に作っちまえ という話もあるもかもしれませんが (微妙な諸事情もあるので)あえてそこには触れないでください 他に必要な情報があれば必要に応じて追記させていただきます
- メール受信時間
メールの受信時間(着信ランプ点灯後、送受信をクリックしてから、表示までの時間)は、 20秒~30秒かかります。 メール内容は10KB~50KBで、 内容の大小と受信時間は比例しません? しかし、サイトからのファイルのダウンロードは数MBでも、 早く、あっと言う間(数秒)です。 この差は何でしょうか?? A4の紙で1枚程度のメールが、 なぜ30秒もかかるのでしょうか? パソコン環境は、 XP(SP3)、アウトルック2003、光回線。 ノートンインターネットセキュリティー2006
- ベストアンサー
- その他(メールサービス・ソフト)
- rcc123
- 回答数7
- メール受信時間
メールの受信時間(着信ランプ点灯後、送受信をクリックしてから、表示までの時間)は、 20秒~30秒かかります。 メール内容は10KB~50KBで、 内容の大小と受信時間は比例しません? しかし、サイトからのファイルのダウンロードは数MBでも、 早く、あっと言う間(数秒)です。 この差は何でしょうか?? A4の紙で1枚程度のメールが、 なぜ30秒もかかるのでしょうか? パソコン環境は、 XP(SP3)、アウトルック2003、光回線。 ノートンインターネットセキュリティー2006
- ベストアンサー
- その他(メールサービス・ソフト)
- rcc123
- 回答数7
- メール受信時間
メールの受信時間(着信ランプ点灯後、送受信をクリックしてから、表示までの時間)は、 20秒~30秒かかります。 メール内容は10KB~50KBで、 内容の大小と受信時間は比例しません? しかし、サイトからのファイルのダウンロードは数MBでも、 早く、あっと言う間(数秒)です。 この差は何でしょうか?? A4の紙で1枚程度のメールが、 なぜ30秒もかかるのでしょうか? パソコン環境は、 XP(SP3)、アウトルック2003、光回線。 ノートンインターネットセキュリティー2006
- ベストアンサー
- その他(メールサービス・ソフト)
- rcc123
- 回答数7
- WaitForSingleObjectについて
いま、VC++2005MFCでCOMを使用したソフトを作成しています。 応答を待って次のコマンドというようなやりとりが相手側機器と必要なのですが、 COMの受信スレッドからのイベントをWaitForSingleObjectで待って次のコマンド送信 というようにやっていくとエディットボックスへのログ表示がコマンドのやり取りが一通り 終わるまで待たされてしまいます。 なにかいい方法はないでしょうか?
- お勧めのマイコンボード
お勧めのマイコンボード教えてください。 マイコンを使って図のようなシステムを考えています。 物体を発射させ、物体がレーザーを横切った時を記録して、時間差を計測するというシステムです。クロックはマイコンからのものを考えています。 最初は物体の自由落下の測定から始めたいと考えています。 そこでマイコン初心者でも上記のシステムが構築できるような、できればやさしめのマイコンボード教えてください。(条件を満たせば学習キットで) マイコンボードには外部入力の出来る割り込みのポート、マイコンボード上には結果を見ることができる液晶がほしいと思っています。また、USBなどを通してパソコンとの通信が出来るもので。 回答お願いします。
- お勧めのマイコンボード
お勧めのマイコンボード教えてください。 マイコンを使って図のようなシステムを考えています。 物体を発射させ、物体がレーザーを横切った時を記録して、時間差を計測するというシステムです。クロックはマイコンからのものを考えています。 最初は物体の自由落下の測定から始めたいと考えています。 そこでマイコン初心者でも上記のシステムが構築できるような、できればやさしめのマイコンボード教えてください。(条件を満たせば学習キットで) マイコンボードには外部入力の出来る割り込みのポート、マイコンボード上には結果を見ることができる液晶がほしいと思っています。また、USBなどを通してパソコンとの通信が出来るもので。 回答お願いします。
- (汎用的に)行列の積を求めるプログラム
L*M実行列A , M*N実行列B , M*N実行列C を引数として、A*BをCに代入するプログラムを作りたいと思っています。 具体的には、エラーがでるのはわかっていますがイメージとして void multiply(int L,int M,int N,double A[L][M],double B[M][N],double C[L][N]) { for(int l=0;l<L;l++) for(int n=0;n<N;n++) C[l][n]=0; for(int l=0;l<L;l++){ for(int m=0;m<M;m++){ for(int n=0;n<N;n++) C[l][n]+=A[l][m]*B[m][n]; } } } という感じです。Cを自分なりに学習したところ、「2次元配列を渡すには行or列数が少なくとも既知でないといけない」のは知識として得ているのですが、ではこの問題を回避して所望のプログラムを書け、と言われると行き詰ってしまいました。 卒論をするにあたり、種々のサイズの行列演算が必要なので、できるだけ効率的な関数を書いておきたいのですが、どうすれば一般の行列の積の演算が可能になるのでしょうか?
- 年賀状ソフト 現在故「筆自慢14」を利用中。
ご存知だと思いますが「筆自慢14」は、メーカーが倒産致しましてバージョンアップも出来ない状態です、しかし 古いソフトですが内容が素晴らしく、年賀 封書 ラベル 普通紙(A3迄)と多彩で、一番優れてるのが 住所録の 友人や親類の分類分けが簡単に出来自動で整理されます 一覧コピーが行閲覧出来100件でもA4紙に4枚位で可能です。同一人物だと自宅、会社も同一欄に記載されます。古くなりトラブルが起きた時対応が出来ませんので変わりに「筆王」の体験版(最新版では有りません)を手に入れ試したのですが、全く劣ります(操作に慣れてないせいも考えられます)、一番困るのが 分類分けが出来ませんし 勿論 住所録の一覧コピーもランダムで多量の枚数に成り 整理が大変です。何方か故「筆自慢14」と同等以上の年賀状ソフトをご存知有りませんか。普通紙に対応して居るとベストです。住所録が簡単に写せれば尚嬉しい限りです。宜しくアドバイス願います。
- ベストアンサー
- その他(生活・暮らし)
- 209100
- 回答数3
- C言語でヘッダファイルにグローバル変数を宣言する
main.hに static int a; と記述し、main.cで #include "main.h" [省略] a=10; のように使用して、-Wallをつけてコンパイルすると、main.cで使用しているにも関わらず、 'a' defined but not used という警告が表示されます。 同様に、関数においても、ヘッダファイルでstaticをつけると ‘~’ declared ‘static’ but never defined と警告されます。 静的グローバル変数などは、ソースファイル内で宣言しなければいけないのでしょうか?ヘッダファイル内で宣言しても警告が出ないような方法はありますか?
- 学校の課題で悩んでます
#include <stdio.h> void main(){ int okane; float kion; printf("今日のお金は?\n"); scanf("%d",&okane); printf("今日の気温は?\n"); scanf("%f",&kion); if( okane >=700&&kion>=30.0 ){ printf("冷やし中華を食べよう\n"); } if( okane >=700&&kion<30.0 ){ printf("ラーメンを食べよう\n"); } if( okane <=700){ printf("バイトしろ"); } } この文を演算しを使わずにifelse文に書き換えるやり方を教えて下さい
- 締切済み
- その他(プログラミング・開発)
- e100013re
- 回答数4
- プログラムに詳しい方お願いします
プログラム詳しい方どなたかお願いします。 これはDCチョッパの自動制御のプログラムなんですが、フローチャートで示すことはできますか? できればその動作の説明もお願いします。 #include "_ffmc16.h" #include "extern.h" #include "monitor.h" unsigned int LED=0xE0; unsigned long LOOP=60000; #define PRD 255 unsigned int ON=10; unsigned int AN0=0; void main(void) { long i=0; __set_il(7); __EI(); /* enable interrupt(for Accemic) */ IO_PDR1.byte=0xF7; IO_DDR1.byte=0x1F; IO_PRL01.byte.PRLL1=ON; IO_PRL01.byte.PRLH1=PRD-ON; IO_PPG01.byte=0x00; IO_PPGC01.word=0xA100; IO_DDR5.byte=0x00; IO_ADCSH.bit.BUSY=0; IO_ADER.byte=0x07; IO_ADCSL.byte=0x92; IO_ADCRLH.byte.ADCRH=0xF8; IO_ADCSH.bit.STRT=1; while(1){ /* endless loop */ IO_PDR1.byte=LED; //for (i=LOOP;i--;i>0)IO_PDR1.byte=LED; //for (i=LOOP;i--;i>0)IO_PDR1.byte=0xFF; IO_PRL01.byte.PRLL1=ON; IO_PRL01.byte.PRLH1=PRD-ON; AN0=IO_ADCRLH.DATA8; if(AN0<100){ON=ON+1;} else if(AN0>100){ON=ON-1;} if(ON<0){ON=0;} if(ON>150){ON=150;} for(i=1000;i--;i>0){} } } /***************************************************************************** interrupt routine ******************************************************************************/ /* reload timer interrupt routine */ __interrupt void reload_int(void) { } /* ADC interrupt routine */ __interrupt void ADC_int(void) { } /* Ext interrupt routine */ __interrupt void ext_int(void) { } /* Vector Table */ #pragma section INTVECT,locate=0xfffc00 #pragma intvect _start 0x8 0x0 /* Reset Vector */ #pragma intvect reload_int 17 /* reload timer interrupt vecter */ #pragma intvect ADC_int 18 /* AD converter Vector */ #pragma intvect ext_int 24 /* Ext Interrupt vecter */