Text
OpenCV 4.5.1 を Visual Studio 2019へ導入(Win10)でやったこと
OpenCVのダウンロード
OpenCVへのリンク
OpenCVの環境変数は%OPENCV%\build\x64\vc15\bin
Visual Studio 2019 の設定
Visual Studio でv142ビルドツール用C++/CLIサポート(最新)をインストール
するとVisual Studio 2019 で プロジェクトの新規作成時にCLR空のプロジェクト(.NET Framework)が選べるようになるので、これをOpenCVを用いる場合は新規作成時に選択する。
次に構成を変更・��加する。
まず画像のように起動マネージャーを開き、
ソリューション構成 Debug or Release
ソリューションプラットフォーム x64
であることを確認する。
またプロジェクトからプロパティを開き、下記を追加する
構成プロパティ/デバッグ:環境 PATH=%OPENCV%\build\x64\vc15\bin;
構成プロパティ/VC++ ディレクトリ:インクルード ディレクトリ %OPENCV%\build\include
構成プロパティ/VC++ ディレクトリ:ライブラリ ディレクトリ %OPENCV%\build\x64\vc15\lib
構成プロパティ/リンカー/入力:追加の依存ファイル opencv_world451d.lib or opencv_world451.lib
これで使えるようになりました。
確認コード(参考より拝借)
#include <opencv2/opencv.hpp>
using namespace cv;
int main() { Mat image = Mat::zeros(100, 100, CV_8UC3); imshow("", image); waitKey(0); }
参考サイト OpenCV 4.5.1をVisual Studio 2019から使用する時の手順
0 notes
Text
NS_LOG_COMPONENT_DEFINE(”FirstScriptExample”);
myfirst.cc におけるログ処理部分を見る。
NS_LOG_COMPONENT_DEFINE(”FirstScriptExample”);
NS_LOG_COMPONENT_DEFINE
特定の名前でログコンポーネントを定義する。 このマクロは、NS_LOGマクロを使用するすべてのファイルの先頭で使用する必要がある。 このマクロは、ns3 :: LogComponentEnable関数とns3 :: LogComponentDisable関数、またはNS_LOG環境変数を使用して後で選択的に有効または無効にできる新しい「ログコンポーネント」を定義します。LogComponent名は、「ns3 :: ArfWifiManager」ではなく、「ArfWifiManager」などの単純な文字列トークンである必要がある。 このマクロは、名前空間ns3内に配置する必要がある。 名前空間ns3の外部の関数がロギングへのアクセスを必要とする場合、推奨される解決策は、ファイルスコープで、名前空間ns3の外部で、NS_LOG_COMPONENT_DEFINEを含めた後に、次のような 'using'ディレクティブを追加することである。
ロギングコンポネント(logging component)
FirstScriptExampleの部分のこと。シェルの環境変数として、外部から参照できるようになっている。ログ情報の出力のON/OFFを制御することができる。
へぇ。よくわかんねぇな。
0 notes
Text
ns-3.30 導入
色々試した結果
参考 神 GOD Ubuntu 18.04にns-3.30のインストール
見通し
virtual box 導入 (マザボメモリ 5120, cpu 4, ディスプレイ64(これはたぶん関係ない))
仮想環境 ubuntu 18.04 構築
ns-3.30導入
ダウンロード
virtual box リンク
ubuntu 18.04 リンク
あとは参考の通りやるだけ。
1. 事前にインストールするモジュール preinstall.sh を作成(ダウンロードリンク)して以下のコマンドを実行
bash preinstall.sh
2.ns3のインストールとビルド 以下の通りコマンドを打つ
cd mkdir workspace cd workspace git clone https://gitlab.com/nsnam/ns-3-allinone.git cd ns-3-allinone python3 download.py -n ns-3.30 cd ns-3.30 ./waf configure –build-profile=debug –enable-examples –enable-tests ./waf build
Hello Simulator の実行
./waf –run hello-simulator
Hello Simulatorと表示されればOK
3.追加モジュール
3.1. visualizer 最初から入ってた
./waf –run first –vis
上で確認できる
3.2. click まずはgithubに鍵を設定する
参考 GitHubでssh接続する手順~公開鍵・秘密鍵の生成から~
cd ~/.ssh ssh-keygen -t rsa #(Enterを3回)
githubにssh keyを追加 Title : id_rsa.pub Key : 以下のコマンドを実行し、全部コピペ
vi ~/.ssh/id_rsa.pub
#終了 :q!
追加したら以下のコマンドを実行し確かめる
ssh -T [email protected]
You’ve successfully 的なの出てきたらOK
次に以下のコマンドを実行
cd ~/workspace/ns-3-allinone/ git clone [email protected]:kohler/click.git cd click ./configure –enable-userlevel –disable-linuxmodule –enable-nsclick make
# ns3に組み込む cd ~/workspace/ns-3-allinone/ns-3.30/ ./waf configure –enable-examples –enable-tests –with-nsclick=../click # NS-3 Click Integration : enabled ./waf build
# 正しく動くか確認 ./waf –run nsclick-simple-lan
3.3. brite 以下のコマンドを実行
cd ~/workspace/ns-3-allinone/ hg clone http://code.nsnam.org/BRITE cd BRITE make
# ns3に組み込む cd ~/workspace/ns-3-allinone/ns-3.30/ ./waf configure –enable-examples –enable-tests –with-brite=../BRITE # BRITE Integration : enabled ./waf build
# 正しく動くか確認 ./waf –run brite-generic-example
3.4. openflow 無理。分からん。出来たら追記する。 こんな感じ。
0 notes
Text
ひつまぶしメニュー01
砂漠で野菜漬けてる合間暇だから。 解読?メモするつもりで初めまして。Java無知だから初めまして。
1.package
クラスやインターフェイスをグループ化するためのしくみ。クラスの先頭で「package」と宣言することで、そのクラスが分類されるパッケージを指定することができる。パッケージは階層を作成することができ、複数の階層から成るパッケージの場合は、階層の上から順に「.」でパッケージ名を連結します。
2.import
本来、クラスを一意に特定するためには、完全修飾名で記述しなければなりません。しかし、to.java.code.sample.basic.Animalのような名前を毎回記述するのは面倒です。あらかじめ利用するパッケージをインポート(import)しておくことで、コード内ではパッケージを省略して記述できるようになります。import命令は、一般的にpackage宣言の直後に記述します。
import com.example.mynavi.object.Animal; Animal a = new Animal();
と
com.example.mynavi.object.Animal a = new com.example.mynavi.objectAnimal();
は同じ意味
3.ArrayAdapterクラス
データの一覧をリストなどのビューに渡すために使用されるクラス。クラス図は次のようになっている。
java.lang.Object L android.widget.BaseAdapter L android.widget.ArrayAdapter
つまりArrayAdapterクラスはBaseAdapterクラスのサブクラス。 ArrayAdapterクラスを利用するにはコンストラクタを使ってArrayAdapterクラスのオブジェクトを作成する。コンストラクタは3つ用意されているが、次を例とする。
ArrayAdapter(Context context, int resource, T[] objects)
ここでは任意のオブジェクトの配列を使ってデータを管理する。
引数1:「Context」クラスのオブジェクトを指定 引数2:リソースとして登録された「TextView」に対するリソースIDを指定 引数3:保持するデータの一覧を表すオブジェクトの配列を指定
以下例)
private String[] data = {"Apple", "Lemon", "Orange"};
@Override public void onCreate(Bundle icicle) { super.onCreate(icicle);
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, R.layout.rowtext, data); }
3.1 Stringクラスの配列として用意されたデータを使ってArrayAdapterクラスのオブジェクトを作成する手順
用いるStringクラスのデータ
String[] data = {"Apple", "Lemon", "Orange", "Strawberry"};
1番目の引数に表示するBitmapクラスのオブジェクトを指定する。(今回はスルー)
データを表示する時に使用されるTextViewをレイアウトXMLファイルとして定義。 今回「Test02_01」と言うプロジェクトを作成し、プロジェクト内の「res/layout」内に「rowdata.xml」と言うファイルを作成 。ファイルの中身は以下
<?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" />
これらを用いてサンプルプログラムを作成すると以下のようになる。
String[] data = {"Apple", "Lemon", "Orange", "Strawberry"};
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, R.layout.rowdata, data);
サイトにあったサンプルプログラム
package jp.javadrive.android;
import android.app.Activity; import android.os.Bundle; import android.widget.LinearLayout; import android.view.ViewGroup; import android.widget.ListView; import android.widget.ArrayAdapter;
public class Test02_01 extends Activity { private final int FP = ViewGroup.LayoutParams.FILL_PARENT; private final int WC = ViewGroup.LayoutParams.WRAP_CONTENT;
private String[] data = {"Apple", "Lemon", "Orange", "Strawberry"};
@Override protected void onCreate(Bundle icicle) { super.onCreate(icicle);
LinearLayout linearLayout = new LinearLayout(this); linearLayout.setOrientation(LinearLayout.HORIZONTAL); setContentView(linearLayout);
ListView list = new ListView(this); linearLayout.addView(list, createParam(WC, WC));
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, R.layout.rowdata, data);
list.setAdapter(arrayAdapter); }
private LinearLayout.LayoutParams createParam(int w, int h){ return new LinearLayout.LayoutParams(w, h); } }
具体的な動作はここ
この辺で勘弁しといたる
0 notes
Text
実践C++入門講座7
リンク
文の種類
実行文
式文
演算子(オペレータ)と被演算子(オペランド)で構成される式を書いて最後に ;(セミコロン)を書いたもの。式を省略して ;だけを書いたものも式文(null文)。
複合文(ブロック)
{と}で囲まれた複数の文。 1つしか文を書けないところに複数の文を書きたい場合に使う。
選択文
条件分岐処理を行うのが選択文( if文とswitch文 )
繰返し文
ループ処理を行う文(while文,do文,for文 )
ジャンプ文
実行を中断して指定の位置から実行を再開する文( break文,continue文,return文,goto文) goto文は 内側のループから複数のループを抜け出したい時だけつかう( 他はメンテしづらいから使わない方が良い )
非実行文と特殊な実行文
ラベル文( 識別子: 文 )
goto文の飛び先を定義するもの と switch文の分岐先を定義するもの
宣言文
大きく3種類
関数:ざっくり グローバル関数とメンバ関数の2種類
変数:ざっくり グローバル変数とローカル変数とメンバ変数の3種類
型: 5参照
特殊な実行文( 初期化付きの宣言 )
変数の定義:定義した変数を初期化。これは実行文でもある。
//以上
0 notes
Text
実践C++入門講座6
リンク
オペランド(演算対象)
例) a+b の場合、+は演算子(オペレータ)、a,bがオペランド
メンバ・アクセス演算子

0 notes
Text
実践C++入門講座5-2基本型
リンク
整数型、浮動小数点型はリンクから確認
特殊な基本型
void型 何もないことを示す型
std::nullptr_t型 C++で定義されたnullptrの型( nullptrはどこも指していないポインタの値 )
実装依存
数値型は実装依存が多いため予め確認すること。
異なる処理系の間でデータを交換する場合、範囲が変わるかもしれんからC++11で追加された”サイズが保障された整数型”を使うと安全。
1 note
·
View note
Text
実践C++入門講座5-1 main()関数
リンク
main()関数呼び出しまでの流れ
プログラム起動
OSが必要なメモリを獲得
ハードディスクから獲得したメモリへプログラムを読み込み
プログラムに含まれているスタートアップ・ルーチンを呼び出し
スタートアップ・ルーチンは静的変数用メモリとスタック用メモリを初期化し、main()関数を呼び出し (ヒープ用メモリは「プログラム」からの要求により獲得/解放)
main()関数からの戻り値をOSへ渡してプログラムを終了
スタートアップ・ルーチン(地味に重要)
main()関数とOSとの橋渡しをする
空のmain()関数の中身
int main(int argc, char* argv[])
{
return 0;
}
argcとargvはコマンドライン・パラメータ
コマンドライン・パラメータの例
Windowsでtest.exe foo bar bazと実行
argc=4;
argv[0]="test.exe";
argv[1]="foo";
argv[2]="bar";
argv[3]="baz";
EXIT_SUCCESS OSに対して「正常終了」したことを通知するためのコード(多くの処理系で0)
EXIT_FAILURE OSに対して「異常終了」したことを通知するためのコード(多くの処理系で1)
1 note
·
View note
Text
実践C++入門講座4
リンク
----- ----- ----- ----- ----- ----- ----- -----
コンピュータを人に例えると ・CPU:人の頭脳 ・メモリ:机(作業場) ・ハードディスク:本棚 ・入力装置:人の耳 ・出力装置:人の口
----- ----- ----- ----- ----- ----- ----- -----
C++のポインタ… … アドレスを記録する変数の一種 32bitOS用プログラム→ポインタサイズ32bit 64bitOS用プログラム→ポインタサイズ64bit
----- ----- ----- ----- ----- ----- ----- -----
ポインタとは? メモリは単なるバイトの並びであり各バイトには通し番号(アドレス)が割り振られている。 そのメモリ上のどこかに変数が配置され、変数の先頭アドレスを指し示すのがポインタ。 例)int型に値100を代入 ----- address ----- ----- data ----- ----- 0x0058FB34 ----- 100 ----- ----- 0x0058FB35 ----- 0 ----- ----- 0x0058FB36 ----- 0 ----- ----- 0x0058FB37 ----- 0 ----- この場合のint型へのアドレスは先頭の 0x0058FB34 ( 0x 00 58 FB 34 ……4 * 8bit → 32bit(4byte))
このアドレスを格納したポインタは ----- address ----- ----- data ----- ----- 0x0058FB40 ----- 0x34 ----- ----- 0x0058FB41 ----- 0xFB ----- ----- 0x0058FB42 ----- 0x58 ----- ----- 0x0058FB43 ----- 0x00 ----- といった具合になる
1 note
·
View note
Text
実践C++入門講座2
リンク
cmake ・ソース(.cpp)の作成 ・ CMakeのプロジェクト生成用のファイル( CMakeLists.txt )
CMakeLists.txtの中身 project(hello) add_executable(??? ~~~.cpp) (~~~はソースファイル)
----- ----- ----- ----- ----- ----- ----- ----- -----
ビルド・プロジェクトの生成(cmdで下記コマンドの実行) > mkdir build > cd build > cmake ..
コマンド・ラインによるビルドと実行 > cmake --build . --config Release > Release\~~~.exe
----- ----- ----- ----- ----- ----- ----- ----- -----
.Visual Studioによるビルドと実行 ~~~.slnからVSが開く ソリューション エクスプローラの~~~を右クリック、スタートアップ プロジェクトに設定 Ctrl+F5でビルド&実行
0 notes
Photo
ABC D - 派閥
bit全探索で解くのに違和感あるけど そういう練習なので
bit全探索を使ってみて気が付いたのは まず使えそうだなとなるのが大変(個人の感想) 制約みていけそうなら行くって感じなのかな?!!?
まあそのうち使えるようになるでしょ 他人ごと
0 notes
Photo
ABC104 C - All Green
やっと解説見て解けましたー bit全探索 解くにはまずbit全探索だ!ってなる必要がある。 そしてp[mn]全部足しても足りないなら最小値じゃない!という勘も必要 (僕が数弱なので分からないだけだと思うけど)
0 notes