image
大学の市民講座で、OpenCVの講座を取っている人がいた。毎週宿題が出るので、自宅のパソコン環境を整えていたとか。勿論Windows上の事です。その人曰く、
そうなんですよ、一番手間取ったのがプロパティシートってやつで VC++ではプロジェクトのプロパティ設定をプロパティシートを読み込むことで既存の設定ができるってやつで 拡張子は ".props" なんですが中身はテキストファイルで編集可能とのこと XML規則ファイルってやつらしい
<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ImportGroup Label="PropertySheets" /> <PropertyGroup Label="UserMacros" /> <PropertyGroup /> <ItemDefinitionGroup> <ClCompile> <AdditionalIncludeDirectories>C:\Users\Owner\Desktop\opencv\build\include</AdditionalIncludeDirectories> </ClCompile> <Link> <AdditionalLibraryDirectories>C:\Users\Owner\Desktop\opencv\build\x64\vc15\lib</AdditionalLibraryDirectories> </Link> </ItemDefinitionGroup> <ItemGroup /> </Project>
マイクロソフトお得意のやつですな。コンパイルする時、includeファイルは何処にあるやつを使うねん? ライブラリと言うか道具箱は何処から持ってくるねん?
そんなの、Makefileに書いておくに決まってるしょ。だから、オイラーはWindowsで開発ったら、golang一択です。それ以外には手を出さないのさ。
new octave in CentOS
控え目なCentOSに新風を! 選挙が近いですから、それ風な標語を掲げてみる。 最新のoctaveは、次の所から供給されてます。これが世界標準です。
世界標準を成し遂げるには、ディストリビューションを横断して手当出来ないといけない。 ウブ方面では、独自にスナップなんてのを提供してるけど、それはウブローカルな事。 世界標準の枠組みは、flatpakらしい。
octaveを植え付ける元を、上記のサイトからDLしてくる。flatpakはCentOSに内蔵されてるので、下記のコマンドを叩くだけ。
(base) cent:Downloads$ flatpak --user install org.octave.Octave.flatpakref The remote 'flathub', refered to by 'org.octave.Octave' at location https://dl.flathub.org/repo contains additional applications. Should the remote be kept for future installations? [y/n]: y The application org.octave.Octave depends on runtimes from: https://dl.flathub.org/repo/ Configure this as new remote 'flathub-1' [y/n]: y Required runtime for org.octave.Octave/x86_64/stable (runtime/org.kde.Sdk/x86_64/5.12) found in remotes: flathub 1) flathub 2) flathub-1 Which do you want to install (0 to abort)? [0-2]: 1 Installing in user: org.kde.Sdk/x86_64/5.12 flathub 0099b34a45a1 org.freedesktop.Platform.html5-codecs/x86_64/18.08 flathub dfca6ff90bc4 org.kde.KStyle.Adwaita/x86_64/5.12 flathub ff24e32a3ab8 org.kde.Sdk.Locale/x86_64/5.12 flathub e6616964babc org.octave.Octave/x86_64/stable flathub daf88f42feca permissions: ipc, network, pulseaudio, wayland, x11, dri file access: host, xdg-config/kdeglobals:ro, xdg-run/dconf, ~/.config/dconf:ro dbus access: com.canonical.AppMenu.Registrar, org.freedesktop.Flatpak Is this ok [y/n]: y Installing for user: org.kde.Sdk/x86_64/5.12 from flathub :
どんなのが入ったか確認。
(base) cent:~$ flatpak list Ref Options org.octave.Octave/x86_64/stable user,current org.freedesktop.Platform.html5-codecs/x86_64/18.08 user,runtime org.kde.KStyle.Adwaita/x86_64/5.12 user,runtime org.kde.Sdk/x86_64/5.12 user,runtime (base) cent:~$ flatpak run org.octave.Octave octave: X11 DISPLAY environment variable not set octave: disabling GUI features GNU Octave, version 5.1.0
そして起動してみたら、Xと繋がらない。仮想環境下で動かしているから?
flatpak-run doesn't work over X11 Forwarding こういう人がうじゃうじゃいたぞ。仰せに従う。
[ham@cent ~]$ flatpak run --share=network --command=sh org.octave.Octave -c "DISPLAY=x.x.x.x:0 octave" GNU Octave, version 5.1.0 : octave:1> image(magic(5)) libGL error: No matching fbConfigs or visuals found libGL error: failed to load driver: swrast
どうなや繋がったんで、簡単なやつを実行したら、窓は出てきたけど、中身無し。libGLエラーが関係してるかと思ったけど、検索したらGPGPUあたりのお悩みしかみつからん。
これはもう、ちゃんとDesktop環境の上で動かせって事だな。(こちらは、ちゃんと動く)
[ham@cent ~]$ cat .octaverc graphics_toolkit('gnuplot');
諦め切れないオイラーは往生際悪く、世に問うた。そして解決方を伝授された。これでCUI端末上から、グラフを眺められる。
octave:7> available_graphics_toolkits() ans = { [1,1] = fltk [1,2] = gnuplot [1,3] = qt }
こんな候補が有るのか。まあ、素直に慣れ親しんだgnuplotにしとけ。それが無難だぞ。
[ham@cent tmp]$ flatpak ps Instance PID Application Runtime 2282297954 6707 org.octave.Octave org.kde.Sdk [ham@cent tmp]$ ps awx | grep 6707 6707 pts/2 S+ 0:00 /usr/libexec/flatpak-bwrap --args 17 sh -c DISPLAY=x.x.x.x:0 octave
関係ないけど、flatpakの一端が垣間見えたぞ。ドッカー未満、かつpythonのversion切り替え器以上って雰囲気だな。
[ham@cent ~]$ flatpak remote-ls | wc 1738 3476 63526 [ham@cent ~]$ flatpak remote-ls | grep octave org.octave.Octave flathub org.octave.Octave flathub-1 [ham@cent ~]$ flatpak remote-ls | grep ffmpeg org.freedesktop.Platform.ffmpeg flathub org.freedesktop.Platform.ffmpeg flathub-1
ふーん、困った時は頼りにしてもいいかな?
image for octave
一人でOpenCV系の自習です。
OpenCV3-Pythonチュートリアルこんなんで、軽く使うのが吉。Cフラフラ語と心中したくないですから。で、概要が分かったとしよう。
次はoctaveに進出だな。画像ったって、ピクセルの行列だから、きっと扱えるに違いない。
そして、広くoctaveの知識を仕入れる。
octave:1> x = imread('lena.jpg'); octave:2> image( flipud(x) ); octave:3> print -dpng 'rlena.png'
試運転でlena嬢をまずは血祭じゃなくて、逆さ吊りにします。何故かっていうと、逆さにしたら、スカートがめくれて、ムフフになると思ったから。まて、巷では肩の上の画像が出回っているけど、肩から下はあらわな姿なのよね。興味ある人はファイル名で探してみるとよい。
それより注目は、行列の豪華さですかね。左右の反転は、fliplrで済んじゃうしね。
imageing for octave
これ、イメージの説明の所で、自慢気に展示されていた。
I = imread ("myimage.jpg"); S = conv2 (I, ones (5, 5) / 25, "same"); [Dx, Dy] = gradient (S);
「畳み込み(畳み込み積分):convolution」のできるだけ簡単な説明
内積の計算方法
octave:18> a = [1 1 1 0 0] a = 1 1 1 0 0 octave:19> b = [1 1 0 0 0] b = 1 1 0 0 0 octave:20> a * b error: operator *: nonconformant arguments (op1 is 1x5, op2 is 1x5) octave:20> a * b' ans = 2 octave:21> sum( a .* b) ans = 2
octave:8> size(y) ans = 225 400 3 octave:10> y = x(:,:,1)/3 + x(:,:,2)/3 + x(:,:,3)/3 ; octave:11> size(y) ans = 225 400 octave:13> [Dx, Dy] = gradient (y); octave:14> size(Dx) ans = 225 400 octave:15> a = Dx/2 + Dy/2; octave:16> image(a)
高卒でもわかる機械学習 (7) 畳み込みニューラルネット その1
octave:1> x = imread('logo.png'); octave:2> y=255-x; octave:3> image(x) octave:4> image(y) octave:5> z=mean(y,3); octave:6> image(z)
OpenCVの色付きロゴを読み込んで、色を反転させ、それを白黒にする。
octave:10> [Dx, Dy] = gradient(z); octave:11> imagesc(Dx+Dy) octave:12> print -dpng 'difflogo.png'
gradientって傾きって意味だけど、これって一次微分という理解で宜しいのかな? difflogo.png
Octave を用いた画像処理や統計処理,Octave と OpenCV との連携
これ非常に有益なページですよ。