プログラミング

Pythonでクラス

いままで全て関数型で実装していたPython、ちょっとしたことからクラスを実装してみようと思いついた。 クラスとメンバ変数はこんな感じで書く。 class Cuboid(object): def __init__(self, width, height, depth): self._width = width self._height = heig…

ガジェットリスト - こう使ってます、PC編

さてOnemix4のおかげでかなり充実したガジェット生活になり、あまりガジェットメンバに変化が無くなった筆者。 「お前、そんなに持っててちゃんと使ってんのか」の声も高いので、順番に紹介していこうと思う。 Cube PC(Core i7 7700) Shuttle Mini Computer …

forループでループカウントを得る

enumerateを使う、整数のループカウントと配列もしくはリストの要素がtupleで得られる。 arrayTest = np.array([0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9], dtype=float) for (count, element) in enumerate(arrayTest): print(count, element) fo…

ファイルパス操作

githubを利用してソースコードを複数のマシンで共有していると環境依存の部分をできるだけ取り除いて、共通部分だけを共有できるようにする必要がある。 前回の画像認識で、OpenCVに含まれるHarr-likeを利用したカスケード識別機を使っているのだが、この識…

OpenCVとnampy(ndarray)で画像処理

Pythonの醍醐味といえば、OpenCVなどの強力なライブラリーが使えることだ。 過去に自力でかなりひーこら言いながら実装したフーリエ変換(FFT)や射影変換があっという間にできてしまった。 OpenCVは中間データフォーマットとしてndarrayを使うので、ndarrayで…

Pillowで画像処理

Pillowは、もし誤解していなければ、GDIのような単純なグラフィクスライブラリーだ。 バッファーを準備して、線を書いたり、単純な図形を書いたり、画像を読みだして表示したりできる。 setpixelやgetpixelもあるので、それを利用して画像処理を書くこともで…

list、array、ndarray

Pythonの標準ライブラリーには配列がなく、listかtupleになる。 listは文字通りリストな上、なんでもいっしょくたに放り込める。 見た目はn次元配列に見えるようなこともできるが、実質は(1次元の)リストで、そのリストのオブジェクトとしてリストを入れ子に…

PythonとTuple

tupleとは順序組 - WikipediaPythonでは関数の戻り値をtupleで返すことができる。 def doSomething(num1, num2): return (num1 + num2, num1 - num2, num1 * num2, num1 / num2)としておいて returnValue = doSomething(1, 2)とすると returnValue = (3, -1,…

anacondaにOpenCVをインストール

anaconda promptで conda install -c conda-forge opencv

Phython matplotlib 3Dグラフ

ついでにCSVファイルの読み込み、散布図で書いた、後悔はしていない。csvファイル (exampledata.csv) x,y,z 0,0,0 1,0,1 .866,.5,1 .5,.866,1 0,1,1 -.5,.866,1 -.866,.5,1 -1,0,1 -.866,-.5,1 -.5,-.866,1 0,-1,1 0.5,-.866,1 .866,-.5,1 2,0,4 1.73,1,4 1,…

Phython matplotlib 2Dグラフ

ついでにCSVファイルの読み込み、散布図で書いた、後悔はしていない。csvファイル (exampledata.csv) x,y1,y2 0,0,0 1,2,-1 2,4,-2 3,6,-3 4,8,-4 5,10,-5に対して import matplotlib.pyplot as plt import numpy as np def main(): csvFile = np.loadtxt('e…

Python matplotlibメモ

(20201225 追記) 純正Pythonにmatplotlibなどを後からインストールするより、最初からAnaconda使った方がよい。 仮想環境も勝手にやってくれる。 そちらを禿しくお勧め。code.visualstudio.com まず仮想環境を作る コマンドパレットから Terminal: Create Ne…

Chuwi Hi10 XR 初期設定いろいろ

うちのFXことChuwi(簡体字で「驰为」) Hi 10 XR。 まず名前がすごいよな、"XR"、この前の機種は"X"。 こんなところでiPhoneの名前パクったってなんにもならないだろう。 しかもChuwiはこういったものを作る会社としては割と中堅、日本なら「VAIO XR」とか「D…

Visual Studio CodeでPython開発環境 on Windows 10(メモ)

仕事でPythonを使いそうなので、久しぶりに引き出しから引っ張り出してきた。 テクノロジーの世界は日進月歩、あっというまにいろんなことが便利になる。 以前に nobu-macsuzuki.hatenablog.com を書いたのだが、今や数段楽になっている。 VS Codeのプラグイ…

(もっともっと雑なメモ)GitHubでsubmoduleを利用して別のレポジトリをサブディレクトリとしてレポジトリに取り込む

主プロジェクト、従プロジェクトをそれぞれGitHubのレポジトリとして登録する 詳細はこちらの雑なメモを参照。 nobu-macsuzuki.hatenablog.com 主プロジェクトをクローンする どこぞにフォルダーを作り、 そのフォルダーでコマンドプロンプトを開く。 git cl…

(もっと雑なメモ)Visual Studioのソリューション内で別のソリューション内のプロジェクトを参照する

ソリューションに追加する Solution Expolorerでソリューションを右クリックしAdd -> Existing Projectを選択 参照するプロジェクトのプロジェクトファイル(xxx.vcxproj)を選択する 外部参照を追加する Solution Expolorerで外部のプロジェクトを参照するプ…

(さらに雑なメモ)Visual Studioのソリューション内でStatic Lib、DLLを作って参照する

Static Lib 普通に作る。 プロジェクトのプロパティを取り、 General -> Output Directoryを"$(SolutionDir)$(Platform)\$(Configuration)\"とでもしておく(後でDLLのリンカが参照する) Static libを利用したDLL 普通に作る。 プロジェクトのプロパティを取…

(とりあえず雑なメモ) GitHub初め

Githubにアカウントを作る https://github.com/ すでにアカウントを持っている人はサインインする。 "Git for Windows"をインストールする https://gitforwindows.org/ レポジトリを作る "Start a Project"をクリックし、"Repository name"を入力して"Create…

Visual Studio CodeでC/C++開発環境

さて、UMPC aka ちっこいパソコン aka ぱしょこんでは、スクリーンサイズの制約があり、フル機能のVisual Studioはなかなか難しい。 マルチペインのIDEはもちろん使いやすいのだが、物理スクリーンサイズの小さいUMPCでは、フォントサイズを小さくして全て表…

固定長配列の初期化

プロのプログラマの方からすれば、何をいまさらな話。 先日よそ様のコードを見ていたら、以下のようなコードがあった。 int array[10] = {0};え?なに?と思ったのだが、これで配列arrayの全要素が0で初期化される。 頭のいくつかだけ規定値で初期化して、残…

Anaconda & Visual Studio CodeでPython開発環境 on Windows 10(メモ)

(20210313 改定) Anacondaをダウンロード、インストール https://www.anaconda.com/download/ インストール時に"Add Anaconda3 to my PATH environment variable"にチェックを入れておくと吉。 Visual Studio Codeをダウンロード、インストール https://code…

バブルソートとクイックソート

MacBook Air 11" Mid 2013のVirtualBoxに導入してあるUbuntuを、14.04LTSから16.04LTSに更新した。 Ubuntuではほとんど開発しないが、CUIで開発するのには一番手軽な環境だ。 GCCの動作確認の"Hello World"がてら、バブルソートを実装した。 バブルソートは…

HID情報を入手する - TOUCHINPUTを使う

さて前回うまくいかなかったタッチパネルの情報の取得、Windows 7からは新しくその名もWM_TOUCHというメッセージがある。 今回はこれを使ってTOUCHINPUTを取得してみる。 https://msdn.microsoft.com/en-us/library/windows/desktop/dd317341(v=vs.85).aspx …

HID情報を入手する - RAWINPUTを使う

Windowsで手軽にタッチパネルの情報にアクセスできないだろうか? タッチパネルといえばWindows 8だが、実はWindows 7から正式に対応をしているのだ。 (それ以前は、デジタイザという扱い) WindowsではUI入力は十把一絡げにHID(Human Interface Device)クラ…

え?何してんだって?

大きな元画から必要な部分だけ切り出して、それを数枚のJPEGに分割して保存するっていう、自炊してたら必要な作業だよ(爆)

MFCでDLLをつくり、それをC#から呼ぶ(復習)

Form appを作る Visual Studioを開き、New Projectを作る、ダイアログで"Visual C#" -> "Windows Form Applicattion"を選択し、名前は"DLLTestForm" MFC DLLプロジェクトをソリューションに追加する Solution Explorerで"Solution 'DLLTesForm'"を右クリック…

素数を求める

新年早々頭の体操、inspired by Team-lablog » 1000万個目の素数を超高速に出力せよ。 素数とは、言うまでもなく、中学校の数学でちょっと頭を痛める「1以外の、自分自身と1以外に約数がない正の自然数」だ。 どうやったら求められるだろうか? コンピュータ…

DirectX事始(になるかどうか)

いまさらだが、DirectXである。 C#のラッパーがあって、と思ったらディスコンになっているし、MFCでも行けるのかな?と思ったらなんと未だにWin32だし、AndroidもiOSもOpenGL ESで、いろいろとモチベーションを下げてくれる、DirectXである。 今後のWindows…

現在のプロジェクトのまとめ

(半分仕事)MFC: 画像処理フレームワーク、画像処理部をDLL化(外部公開可能にする)、解析用の2D-FFTとPSNR、MFC6からのポーティング (半分仕事)C#: EDID(ディスプレイの情報を収めたデータ)リーダー (半分仕事)DirectX (なのでMFCか): 画像色空間可視化App、O…

新しいプロジェクト

先週末から新しいプロジェクトとして「(半分仕事)MFC: 画像処理フレームワーク、画像処理部をDLL化(外部公開可能にする)、解析用の2D-FFTとPSNR、MFC6からのポーティング」を始めたのだが、いろいろあって処理部をMFC DLL(C++)、UIはC#で書くことになった。 …