りさーちゃーのひよこ
技術のこととか
2014年6月27日金曜日
自宅Linuxサーバを構築してみる(5.sambaの導入)
#はじめに ようやく準備が整ったので、sambaを導入します。無知の私にとってはこいつも辛かったw。
#sambaのインストール 次のサイトを参考にしました。
→
CentOSで自宅サーバー構築-Windowsファイルサーバー構築(Samba)
→
LINUXサーバーインストール(FedoraCore4) -Samba:Sambaをインストールして、みんなのパソコンからファイルを共有する。
以下注意です。
・Windows7からアクセスするには、セキュリティポリシーの設定を明示的に行わないといけないようです。これをしないとエクスプローラにipアドレスを入力しても反応すらしてくれません。そんなこと普通に作業していても気が付くはずも無く、相当はまりました。
→
タカさんの☆気ままにPC-Windows7設定(SAMBAに接続)
・
/etc/samba/smb.conf
は次のサイトを参考に新規に作りました。
→
東京伊勢海老通信-自作NASで自宅ファイルサーバー 第5回 (Sambaのインストール)
・共有フォルダは以前作成したUSBストレージを指定しました。 →
/mnt/raidsrv
・上記フォルダのアクセス権限をすべてのユーザに書き込み許可にします。こうしないと今度はトップフォルダにアクセスできません。
・iptablesの設定を忘れずに。これをしないとエクスプローラにipアドレスを打ってもアクセスできません。
・SELinuxの設定を共有フォルダについては解除する必要があります。これをしないとトップフォルダにアクセスできません。CentOSに標準で入っているセキュリティ機能なのですが、なんとsambaはこれに引っかかるらしい。参考サイトではフォルダ単位で設定を切ってますが、次のサイトではSELinux自体を無効にする方法を紹介しています。私は後者で切っちゃいました。
→
system2222-CentOS その5(Sambaサーバ)
・自動起動設定を忘れずに。
・
/etc/samba/smb.conf
のhost allow に注意しましょう。ルータのネットワークアドレスが何故か変わってしまったらアクセス拒否されます。どうせホームネットワークなら、192.168. くらいで止めていいでしょう。ルータのアドレスが変わるなんてことが起きたら、ネットワーク設定も忘れずに合わせましょう。
/etc/sysconfig/network-scripts/ifcfg-eth0
・ここまで出来たらWindowsのエクスプローラに \\<ipアドレス> を入力します。
/etc/samba/smb.conf
で[ ]内に設定した文字列のフォルダが出てきます。(data とか)
そのフォルダを開くと
raidsrv
フォルダがいます。そのフォルダを開くと、
前に作った
"testfile" がいるでないですか。。。
フォルダやファイルもWindowsから新規作成できました。よし、完成です!多分。
#データの移行 従来使っていた外付けから本サーバにデータをコピーします。私はソフトウェアミラーリングツールとして、フリーの
BunBackup
というソフトを使っています。
外付け→[USB]→PC→[無線]→サーバ という構成でコピーを始めたら、とっても時間がかかることが分かりました。
でも始めちゃったし、放っておけばいいやと思って、普段使っていないPC経由で放置することにしました。500GBで2晩もかかりました。決してお勧めしません。ヘッポコ技術者なので、実現できればいいです。一回きりの作業ですし。
※さすがに繰り返し行う作業なら見直しますよ。。
#Windows7からのアクセスが遅いとき 共有ドライブのフォルダを開くだけでとんでもなく時間がかかることがあります。そんな時はWindows7側の設定を変更するとよいようです。次のサイトの(1)-(4) までやるだけで、体感的には大分速くなりました。どこがボトルネックだったのかはもはやわかりませんが。
→
hoyalynのブログ-Windows 7でファイル共有が遅い対策(疲労困ぱい)
#最後に 今回も結構紆余曲折しました。その分できたときめっちゃうれしいですね。勉強になります。
とりあえずこれで2TB RAID1のファイルサーバが完成!いちいち外付け持ってきてつなげなくてもいい!!!
この次どうするかはまだ未定です。とりあえずいくつか調べてみて簡単に出来そうなやつから導入してみようかと。
では、ごきげんよう。
#SWATのインストール 2014/7/17 追記 Sambaを便利に設定するためのツールSWATをインストールしてみました。
このサイトの設定にしたらなんとか動いてくれました。
→
サーバー初心者による自宅サーバー構築備忘録-samba設定ツール「SWAT」のインストール
ポート901の開放を忘れずに。
2014年6月26日木曜日
自宅Linuxサーバを構築してみる(4.ネットワーク接続とリモートデスクトップ)
#はじめに ようやくUSBストレージがつながったので、これをWindowsマシンからアクセスできるようにしたいところです。そのためにはまず自宅のローカルネットワークにつなげる必要があるので、そのメモを残します。
ネットワークついでに、Windows7からリモートデスクトップ接続で操作できるようにします。いつまでも部屋の片隅にあるサーバゾーンで腰を曲げながら作業するのにうんざりしてきました。
#ネットワーク接続
下記ページの一番最後の項目を参考にしました。いたって簡単です。この設定でルータ(ゲートウェイ)につなげてしまえば、ローカルネットワークとインターネット両方につながりました。ネットワークのことは本当に疎いので良く分かってないのですが、ルータってすごいですね。
→
CentOS 6インストール
eth0というのがパソコンによってどれなのか分からないと思います。とりあえず差し替えてうまくいけばそれ、という感じでつながりました。
→
Life is like a ten-speed bicycle-CentOSネットワークにつながらない
#Windows7→CentOSリモートデスクトップ接続 SSHでも良かったのでしょうが、どうせ作業するなら画面ごと欲しかったのでこれにしました。色々確認しやすいし。とか言ってる辺りがGUI世代の申し子ですね。
さて、基本こちらのサイトを参考にしました。CentOS標準のvinoサーバを立ち上げ、WindowsからはVNCクライアントで接続します。これが一番シンプルで一発でうまくいきました。
→
もふもふ部@COW-Windows7からCentOS6.3をリモートデスクトップで操作する
途中のiptables の設定はファイアウォールのGUIで済ませました(申し子なので)。打ってもいいけど、ねぇ。
→
ASTEC-X-Linux のファイアウォールの設定方法
ちなみに、OSを簡易インストールしたのでGUIファイアウォールが無い!と思って調べたら追加インストールできました。
→
Unknown Records-CentOS6でiptablesのGUI設定が入ってないとき
実はvnc-serverも試していたのですが、いくら調査して設定してもうまくいかず発狂しそうだったのでやめました。。目的が達成できれば手段はなんでもいいです。
#自動ログイン リモートデスクトップにしましたが、今のままだとサーバのOSを立ち上げたとき初回ログインのためだけにいちいち隅のサーバゾーンで(以下略)。というわけで自動ログインも設定しておきました。こちらは特に障害はなく拍子抜けしました。なんか、もう、どうせうまくいかないはずくらいの心構えになってきますね。
→
SUNONE BLOG-[Linux] CentOS 6.2で自動ログイン
#最後に それにしても、Wiindowsで染まりきった私にとって、Linuxで環境構築するのは精神力の養成である。リモートデスクトップはまじで辛かったw。意地を張らずにさっさとvinoを使えばよかった。こんな調子で本当に初回で提示した構想など達成できるのだろうか。先が思いやられるばかりである。
お次はsambaを導入し、Windowsからアクセスできるようにする。これにてようやくファイルサーバが出来上がるわけである。次回もお楽しみ(?)に。
2014年6月22日日曜日
自宅Linuxサーバを構築してみる(3.USB接続RAIDストレージの構築)
#はじめに お次はストレージを用意します。次のような仕様にしました。 - ハードウェアRAID1 - 容量は2TB - USB接続 順を追って説明をします。
#1.HDDケースをセットアップする RAID対応のHDDケースに、HDDを挿入し、ハードウェアRAIDの設定をします。
HDDケースです。真っ黒でかっこいいですね。
HDDです。2つとも2TBです。
HDDケースに2つのHDDを挿入します。底面にストッパがあるのでこれを解除して、ふたを外してから挿入します。
背面を見ると、HDD動作モードの切り替えが出来ます。説明書にしたがって点灯位置をRAID1に変更します。
いよいよPCとの接続です(ごちゃごちゃ…)。
#2.USBストレージをマウントする まず、この作業はroot権限で行うことが必須です。初心者の私のように通常ユーザ権限で入って、あれおかしいななんてならないようにしましょう。
基本的に以下のサイトを参考にしました。
→
アイル開発チームの技 ブログ-[Linux]外付けHDDのマウントの仕方
自分が作業をしながら気づいた点をメモしておきます。
##パーティション作成 ・USBで接続したストレージデバイスはsdbと表現されます。以下のサイトによりますと、「第 2 SCSI ディスク (アドレスによる) は /dev/sdb と名付けられ、以下も同様。」とあります。
→
Linux におけるデバイス名
よく分かりませんが、先に進むことにします。
・fdiskでdコマンドを入力しても「領域が定義されていません」と表示されます。新品で購入したHDDにそもそもパーティションが定義されてませんでした。
・よっていきなりnコマンドで領域を新規作成します。パーティション番号は1としました。これでパーティション
dev/sdb1
が生成されます。
・wコマンドでテーブルを実際にディスクに書き込みます。
##フォーマット ・パーティションを作ったので、このPCで使えるようにフォーマットします。
・mkfs.ext4 /dev/sdb1
*サイトではmkfs.ext3でしたが、私はmkfs.ext4で行いました。ext3と4の違いは次のサイトに記載されています。3より4の方が多くのファイル数やサブディレクトリ数に対応しているようです。
→
redhat カスタマーポータル-第6章 Ext4 ファイルシステム
これが結構時間かかります。RAID1の2TBなので当然です。何か別の作業をしながら待ちましょう。
フォーマット中はHDDケースのアクセスランプが激しく点滅します。
##マウント ・フォーマットしたHDDはマウントしないと使えません。
・マウントポイントは次の場所に作成しました。
mkdir /mnt/USB_RAID_2TB
・マウントは次のように行いました。
mount /dev/sdb1 /mnt/USB_RAID_2TB
##自動マウント ・常時つなぐストレージに対して、いちいち起動のたびに上記mountコマンドを打つのは面倒なので、常時マウントするように設定します。
・/etc/fstab に設定を追加します。以下のサイトの最後のほうを参照しました。
→
Scribble-コマンドライン(cui,fdisk)でHDD追加
・私の場合は以下のように追記しました。
/dev/sdb1 mnt/USB_RAID_2TB ext4 defaults 1 2
##自動マウント確認 ・色々な確認は紹介したサイトを参照すればよろしと思います(おい)。
・私はOSを再起動したときに自動マウントされているかをファイルの存在で確認したかったので、mnt/USB_RAID_2TB/testfile などという適当なファイルを作っておいて確認をしました。
#最後に それにしても、USBストレージ一つつなぐのにこんな面倒なことしないといけないとは…。Windowsがよろしくやってくれていることっていっぱいあるんですね。勉強になります。
次回は、絶対要件です。WindowsマシンからUSBストレージのファイルにアクセスできるようにします。
ここまでやったら一旦ペースダウンします。多分。
2014年6月19日木曜日
自宅Linuxサーバを構築してみる(2.OSインストール)
#はじめに 前回組み立てたPCに命を吹き込みます。OSです。もともと、安く済ませたいのと勉強をかねてLinuxベースにするつもりでした。少し調べましたが、CentOSにすることにしました。RedHat系って響きがかっこいいし(?)。
こちらのサイトでは迷ったらCentOSとありましたし笑。
→
DX.univ-Linux入門 ~ディストリビューションの選び方~
また、今回大いに参考にしているこちらの記事でもCentOSの動作実績がありましたので。
→
東京伊勢海老通信-linuxで自宅サーバー(自作NAS)つくるシリーズ
Ubuntuも迷いましたが、せっかくLinuxにしたのにインターフェース重視にしたら勉強にならないと思って却下しました(おい)。というわけで、初心者によるドキドキCentOSインストールの開始です。
#手順 ##インストール用USB(Live USB) をWindows PCで作成する 外付けがあるのでDVDでも良かったのですが、ここはあえてUSBでやってみることにします。ます、次のサイトを参考にLive USBを作成しました。ただし、私はCentOS6.5を選択しました。
→
リターンライダー = [路麺 プログラミング : ZRX1200];-【備忘録】CentOS をUSBメモリからインストールする
##Live USBのバグを修正する 実は、これだけだとLiveUSBは未完成です。国を選択したあとに、
"Unable to read package metadata. This may be due to missing repodata directory. Please ensure that your install tree has been correctly generated."
などというエラーが出てスタートに戻ってしまいます。
これは、
/repodata
以下のファイルの拡張子がすっぽり抜けているためだそうです。
/repodata/TRANS.TBL
に拡張子付きのファイル名が記載されています。拡張子が抜けている全てのファイルをこの拡張子付きの名前にリネームします。例えば、私の場合を一つ挙げると
53f50ccbc03b126a3241fe00679bcde2058d54fa3d0ae91a6bbe9e214db68ba1-primary
↓
53f50ccbc03b126a3241fe00679bcde2058d54fa3d0ae91a6bbe9e214db68ba1-primary
.sqlite.bz2
といった具合です。
→
StackOverflow-Unable to read package metadata. This may be due to missing repodata directory. Please ensure that your install tree has been correctly generated
##Live USBでインストール 以上の作業が完成したら、ようやくインストール開始です。このUSBをインストール先のサーバPCに挿して起動します。起動時BIOSが立ち上がるので、ブートオプションをUSBに設定します。するとCentOSのインストール画面が表れます。以後は質問に回答してきます。このサイトが分かりやすいです。
→
Linux Computing-CentOS 6.5 のインストール
インストール中に "What type of media contains the installation image?" と聞かれたら"Hard drive"以下の/dev/sda1を選択する。
→
How to Set Up a USB Key to Install CentOS
無事にOSが起動して一安心です。実はこれ、32inchのテレビをHDMIで接続して出力しました。ど迫力ーw。
お次はRAID構成のUSBストレージを用意します。
2014年6月18日水曜日
自宅Linuxサーバを構築してみる(1.PC組立て)
#はじめに
前回の記事
で購入物を紹介しました。今回はそのうち最低限OSが動作するまでのハードウェアの組立てを行います。初めてなのでとてもとても緊張して、手に汗を握ってしまいました。 #手順 ##1.ベアボーン開封 想像してたより少し大きいかな、という印象ですが十分小さいです。USB6ポート、LAN2ポート、DVI-I、HDMIと結構至れり尽くせりです。シリアルが付いているのは普通なのでしょうか…?FAPCとかなら理解するのですが。
##2.ベアボーン解体(?) 解体というほど大げさなものではありませんが、CPUとメモリを取り付けられる状態にします。
まず、説明書にしたがってカバーをひたすら外します。ドライバが必要です。
次に、CPUクーラを外します。4点のプラスチック製のアタッチメントをねじるだけで外せます。ただ、構造がぐねぐねしているので外しにくいです。周りの部品を傷つけないように慎重に外します。
##3.CPU取り付け CPUとメモリが緊張しましたね。ベアボーンに専用のクーラが付いているので、付属のファンは使用しません、、、捨てようかな笑。
さて、ベアボーン側のカバーを上げます。
溝に合わせてCPUを設置します。CPUの隅には小さい三角形のマークが付いておりこれが向きの目印です。説明書にしたがって慎重に設置します。
マザーボード側のカバーを閉じます。閉めるときに「ミシミシ」と小さい音がするので心臓が止まりそうになりましたが、OSが動くことを確認済みなので、正常だと思います。
##4.CPUグリスの塗布 CPUクーラの冷却効果を高めるためにグリスを塗布します。
参考→
パソコン初心者講座-CPUグリスの交換・塗り直し
ベアボーンに付属されていたグリスをぐりぐり塗ったのですが、どうも不均等でした。なので、ダンボールの切れ端を使って伸ばすように塗ったら割かし綺麗になりました。
##5.メモリの取り付け CPUの次に怖かったです。斜めからって難しそうだと思いましたが、案外簡単にはまりました。前回からの繰り返しですが、
DDR3 SO DIMM(ノートパソコン用)
を選びましょう。
##6.クーラの取り付け 先ほど外したクーラを元に戻します。挿して4点ひねりなおすだけでとても簡単です。メモリが見えているのがかっこいい気がするのは私だけですね。
##7.SSDの取り付け SSDを開封すると色々出てきますが、本体以外不要です。3.5inch向けのアタッチメントなので。電源とSATAの端子がありますね。
ベアボーンのケースに取り付けます。4箇所ネジ止めををして、電源とSATAのケーブルを接続します。
ケースを本体にネジ止めします。
##8.完成、BIOS起動の確認 最後に他のカバーも全て取り付けて完成です。とりあえずBIOSの画面が表示されることを確認して一安心ですね。これで立ち上がらなかったらマジで泣いてます。
とりあえずこれで生まれて初めてのPC自作が完了です。ベアボーンで相当楽をしていますが、あまりハードにこだわりも無く、手間もかけたくないのでいいかなと。
次回はOSのインストールです。
自宅Linuxサーバを構築してみる(0.構想)
#背景 デジタル一眼レフを購入してはや一年。実に色々な場面でパシャパシャ写真を撮っているうちに、ある不安がよぎるのです。
「この写真達、消えたらどうしよう!」
HDDが認識しなくなる、という事例は度々耳にする。先日会社でもあったわけで。慌てた私は嫁とお話をし、夏のボーナスで一式を買わせていただけることになりました。ありがたい。
どうせ強固なファイルストレージを設けるなら、サーバを立ててしまおう!お金はかけたくないのでOSはLinuxにします。当方自作PCは初めてです。Linuxもネットワークもくそ初心者なので、自分で構築して知見を得たい。
ということでそれっぽいことをしている記事を探したら、やりたいことがどんぴしゃで一致した記事があり、ここをベースに構築することにしました。
→
東京伊勢海老通信-linuxで自宅サーバー(自作NAS)つくるシリーズ
#構想 やりたいことは自宅サーバ。ちょっと開発も考えていますが、いずれにしろ重い処理を行うことは想定していません。そして安さを求める!
##要件
・ハードウェア
*安く済ませたい。
1.最低限のサーバ用途なので低スペックでOK。
OSは無料のLinuxベースで。
*HDDは多重化する。
2.Raid構成を採用。
・ホームネットワーク
*リモートログインで管理したい。
3.SSHを導入
*ウィンドウズからファイルを共有できる。
4.ファイルサーバを導入。
*スマホやタブレットから写真や動画を閲覧できる。
5.メディアサーバを導入。
*日々のノウハウなどを蓄積するWikiを構築したい。
6.Webサーバを導入。
・インターネット
*機能はホームネットワークと同じ
*外部からの接続は家族だけにする。
7.VPNを導入。
※光学ドライブが無いのは、たまたま私が外付けドライブを持っていたからです。
#購入機器 上記要件を元に機器を購入しました。Amazon, Rakuten等で調べましたが結局上記サイトとほとんど要件が変わらないのでほとんど同じ買い物となりました。。パクった感じになり申し訳ないです。。
すべてそろったときのワクワク感は半端無かったですね!こんなわくわく久しぶりでした。許可をくれた嫁に感謝(おい)。
2014年6月現在 総計 約\520,00 + 送料です。上記紹介サイトだと\42,000とのこと。これでもがんばって安いのを探したほうですが、年々値段が上がっているのか、いや私の調達能力が低いのか。。
## PC本体 コスパ重視のベアボーン。新品だが箱が壊れている安物というおいしい買い物ができた。
SHUTTLE H61 90W DDR3 XH61 V/Shuttle INC.
¥13,400(新古品で購入)
Amazon.co.jp
##CPU コスパ重視のCeleron。注意は
"LGA1155"
ソケット対応のCPUを選択すること。
Intel Celeron G1620 BOX品
¥4,470
楽天
##メモリ 安くて4GBならOK。注意は
"SO DIMM"(ノートPC用)
の規格を選ぶこと。
上記ベアボーンのホームページ
だと対応メモリが"DIMM"(デスクトップ用)となっている。これはひどい。。。
ご紹介した記事のメモリ一覧の中のメモリのAmazonへのリンクもデスクトップ用で、ベアボーンもデスクトップという認識なのでDIMMを購入したらサイズが合わない。。。これにより返品をしたので往復の送料分損をしました。安く買ったのにもったいない!勉強になったということにします。
Transcend JetRam ノートPC用増設メモリ PC3-8500(DDR3-1066.../トランセンド・ジャパン
¥5,298
Amazon.co.jp
##SSD OS領域用です。32GBにしたのは、16GBで足りなくなったら怖いので、なんとなくです。
ADATA Technology Premier Pro SP600 SSD SATA3.0 .../Adata
¥4,782
Amazon.co.jp
##HDD 安いのを2セット買いました。WDなら実績もあるだろうと。長く使うことを考えると1TBだと不安なので2TBを購入。
【Amazon.co.jp限定】WD Green 3.5inch IntelliPower 2.../Western Digital
¥8,186
Amazon.co.jp
##RAIDケース ハードウェアRaid対応で安いのを探したらこれに至りました。
ラトックシステム USB3.0/2.0 RAIDケース(HDD2台用) RS-EC32-U3R/ラトックシステム
¥7,540
Amazon.co.jp
というわけで、時間をかけて色々順番に1つずつやっていこうと思います。
とりあえず次回はPCを組み立てようと思います。
2014年6月17日火曜日
OpenGL描画→OpenCV処理→ピクチャボックス描画
#背景 画像処理シミュレータを作成しようとした際、下記のような悩みを持ったことはないだろうか。
- カメラも画像処理をする対象も準備するのはお金かかるし、シミュレーションで検証できないかな。 - じゃあOpenGLで仮想世界を作ってみよう。 - OpenGLでレンダリングした画像をOpenCV側の画像に変換すれば画像処理ができるな。 - その結果をツールに表示したいな。色々検証したいからGUIも使えたら便利そうだな。 少なくとも私はしたいと思いました。
これまでいくつか書いた記事は、これを実現するためのものでした。フォームアプリはまったくの初心者だったので、試行錯誤でようやくそれっぽいものを実現しました。
ようやくフローが分かってきたので、一旦まとめようと思います。今回は実装ではなく、概念の部分です。実装は過去の記事で補完するものとします。
#OpenGL→ピクチャボックス あれ、OpenCVは?と思いますが、まずはここを理解する必要があります。まずは次の図を見てみます。
過去に一部を示しましたが、簡単におさらいします。大きく分けて2段階の処理に分かれます。初期処理と逐次処理です。
初期処理
OpenGLで描画する際にはフォームのピクチャボックスのハンドルからレンダリングコンテキストを取得する必要があります。
→
C++/CLI フォームアプリとOpenGLの連携(フォームへのレンダリングとGUI操作)
逐次処理
(※動画にしたい場合。静止画なら1回でいいです。)
描画対象のレンダリングコンテキストをカレントにし、OpenGLでバッファにレンダリングします。ただし、私の場合、ダブルバッファモードですのでレンダリングした画像はまだVRAMではない他のメモリに格納されており、ピクチャボックスに反映されません(
オフスクリーンレンダリング
)。
これをSwapbuffers()で入れ替えて、晴れてピクチャボックスに表示されます(
オンスクリーン化
)。
これをTimerなりで設定して繰り返し行えば動画が表示されます。
なお、オフスクリーンレンダリングの説明記事としては、次のサイトが分かりやすかったです。
sonson@Picture&Software-[OpenGL] オフスクリーンレンダリング
※ちなみに、オンスクリーンレンダリングは直接ピクチャボックスの領域に書き込むことを指します。描画の過程まで表示されるので描画の量が多いと画面がちらつきます。
#OpenGL→OpenCV→ピクチャボックス OpenGLで描画できましたが、私がやりたいのはこれだけではありません。OpenGLでレンダリングした画像を
表示させず
に、OpenCVで処理した結果だけをピクチャボックスに表示したいのです。ここで、上述した
オフスクリーンレンダリング
が役に立ちます。
下の図は先ほどの図にOpenCVの処理を追加したものです。先ほどと同様に説明をします。
初期処理
OpenGLでレンダリングする場合とまったく同じです。OpenGLでピクチャボックスに書き込むわけではないのですが、どちらにしてもピクチャボックスからウィンドウハンドルを取得し、それからデバイスコンテキストを取得しなければなりません。デバイスコンテキストはどこからともなく沸いて出てくるものではないようです。
(ピクチャボックスに限らず、何らかのウィンドウハンドルを取得できればいいとは思いますが、わざわざ余計なことを考えることもないでしょう。ピクチャボックスから取得すればウィンドウサイズも同一ですし。)
逐次処理
(※動画にしたい場合。静止画なら1回でいいです。)
先ほどオフスクリーンレンダリングをしたイメージバッファをcv::Matのイメージバッファにコピーします。
→
C++/CLI フォームアプリとOpenCVの連携(cv::Mat)-【1. OpenGL画像をOpenCV画像(cv::Mat)に変換】
コピーしたら画像処理を好き勝手します。OpenCV画像処理の解説は他の有用なサイトを参照ください。
cv:MatのイメージバッファをBitmat形式に変換し、ピクチャボックスに描画します。Windowsのフォームに書き込もうと思ったら、Bitmapオブジェクトの利用は避けられません。
→
C++/CLI フォームアプリとOpenCVの連携(cv::Mat)-【3. 結果画像(cv::Mat)をフォームのピクチャボックスに表示】
注意点ですが、OpenCVのバッファを表示する際はSwapBuffursは行ってはいけません。短時間のうちにOpenGLの画像とOpenCVの画像が高速に切り替わり画面がちらつきます。表示させるのは目的に応じてどちらか一方にしましょう。
#まとめ 手順は以上です。
これまであれが足りないこれが足りないと一個一個調べて作っていたものが、ようやく1つのループになりました。
下記画像の①、②については過去の記事でサンプルを公開しています(上記説明で前述ですが、まとめとして書きます)。
①:ウィンドウハンドルからレンダリングコンテキストを習得
→
C++/CLI フォームアプリとOpenGLの連携(フォームへのレンダリングとGUI操作)
②:OpenGLのイメージバッファをOpenCVのイメージバッファにコピー
OpenCVのイメージバッファをピクチャボックスに表示
→
C++/CLI フォームアプリとOpenCVの連携(cv::Mat)
これで少しは遊べるようになりました。
余談ですが、C#に興味はありましたが無理に使う必要はなさそうですね。C++に対するC#のメリットはWebや通信関係を便利にするくらいだと思います。C++でもGUIはフォームで簡単に作れますし。
会社で今度C#のセミナを受けさせてもらうことになったので、気が向いたら投稿しようと思います。
それでは。
新しい投稿
前の投稿
ホーム
登録:
投稿 (Atom)