OpenCV
siglentna.com websocketを使って保存するPythonコードは公開されているので、多少の変更を加えるだけで実用レベルに達する。 main部分を改造して、bmpファイルではなくpngファイル形式で、ファイル名は 日時.png で保存するようにした。 def main(): global…
Windows11でおなじみの壁紙のラインプロファイル=直線上のピクセルの輝度値を取得してみよう。 参考にしたブログ ラインプロファイルの取得法【5/24 訂正】 #Python - Qiita import cv2 import numpy as np import matplotlib.pyplot as plt import scipy x0…
素直にMJPG形式で配信される動画をOpenCVで表示させる import cv2 url = f"http://192.168.0.10/mjpg/video.mjpg" cap = cv2.VideoCapture(url) while(True): try: ret, frame = cap.read() if ret: cv2.imshow("Video", frame) cv2.waitKey(1) else:raise e…
OpenCVのmomentsを使って丸っぽさと、伸びている方向の角度を求めるコードを書いてみた。 関数moments_round_angleのXとYは以下の論文の定義通りである。これは、二次のモーメントの対称性を表す指標である。(ちなみに一次のモーメントからは重心などが求ま…
画像からPDFにするためのパッケージ img2pdf が必要。 数字を自然順にソートするためのパッケージと関数 natsort natsorted が必要。 PNGファイルに透過チャンネルがある場合、 img2pdf.AlphaChannelError: Refusing to work on images with alpha channel …
OpenCVでいうところのRectをやるには、配列の一部をスライスすればよい。 dst1 はY=164からHeight=2960、X=356からWidth=2028ピクセル分。XとYが逆になってることに注意。 import cv2 import glob files = glob.glob("*.jpg") i=0 for file in files: im = c…
入力画像は、アルファチャンネルあり、なしBGR、グレースケールの3種類に対応した。 アルファチャンネルは8bitの4チャンネルの4つ目で、0-255で与える。0の場合は完全に透過する。 今回は、BGRの輝度値が真っ白付近(245-255)を透過する条件とした。 変換前(…
OpenCVで画像をPNGファイル、すなわち可逆な形式で圧縮し、ファイルで出力することなくデータを取得したいとき、 cv::imencode というエンコード関数を使う。原理的には以下のように記述する。(そのままでは動かないよ) vector<int> params = vector<int>(2); params[0</int></int>…
PocoとOpenCVによる画像の共有メモリ経由での書き込み・読み出しの実装例 画像を共有メモリから読み出す OpenCVには、画像の先頭のポインタ sm.begin() を与えると自動的に画像として読んでくれるコンストラクタがあるので、それを利用した。 書き込む方と同…
16bitモノクロ画像の輝度値の最小が3802、最大が11113とする。 import numpy as np import cv2 src= cv2.imread("input.tif",-1) src=np.add(src, -3802) src=src*(255/(11113-3802)) dst = src.astype(np.uint8) cv2.imwrite("output.png",dst) 注意点: imr…
バージョン3以降のOpenCVには、画像のラベリングできる関数が実装されている。 connectedComponents は、入力画像と同じサイズの画像にラベルの番号が書かれた画像を返してくれる。 connectedComponentsWithStats はStats、すなわち面積、重心等を含めた情報…
諸事情で複数の画像を簡易的に1つのファイルに統合したいことがあり、またそのファイルをPythonから読み込みたい需要があった。 Numpyを使ったバイナリファイルの読み込み方、OpenCVを使ったデコードの仕方などの知識を使う。 V00000001_L0_VX0001_VY0000_ma…
C++ OpenCVの導入、サンプル画像の作り方は Visual Studio 2017 + OpenCV 3.2.0 + x64の初期設定 とOpenCVに関する質問の受け付け(コメント欄へ) - 物理の駅 by onsanai を参照されたし。 cv::encode cv::decode を使うと、ファイル出力なしに出力用のバイト…
グレースケールで上記の画像を読み込む。 31x31のカーネルサイズのガウシアンフィルタをかける ガウシアンフィルタをかけた画像から元画像を引く しきい値 18 の処理をかける 確率的ハフ変換を行う 直線を描画する # %% import cv2 import numpy as np img =…
点列を表すのにOpenCVの cv::Point2f を使ったが、OpenCVライブラリは使ってないので適宜置き換えて欲しい。 最後から1つめと、最後の点との距離はlengthではない。 std::vector<cv::Point2f> cell_length(const std::vector<cv::Point2f>& points, double length) { assert(points.siz</cv::point2f></cv::point2f>…
書き換えるのは下記で紹介してるコード phst.hateblo.jp import cv2 import numpy as np src = np.zeros((150, 220, 3), np.uint8) cv2.putText(src, "Hello World", (5, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 200), 2, cv2.LINE_AA) cv2.line(src, (19…
VSCodeをインストールする $ sudo snap install --classic code Pythonをインストールする www.python.jp pip、OpenCV、NumPy等のインストールを行う pip3 install opencv-python --user pip3 install numpy --user pip3 install matplotlib --user 次の記事…
CCDカメラは読み出し方式による縞々模様(1行ごとに輝度の濃淡が発生する)現象が起こる。 通常、ハードウェア側で調整されるものだが、ソフトウェア側で調整する必要に迫られたので、そのコードを公開する。 なお、Visual Studio + C# + OpenCVSharp と C++を…
ピークの周波数によって、途中のBoxFilterとGaussianBlurのカーネルサイズは変えると良い。 背景の強度を求めて、有意度を求めるのがこのプログラムのミソである。 var size = new OpenCvSharp.Size(nbin, nbin); Mat signal = Mat.Zeros(size, MatType.CV_3…
OpenCV 2系でGPUで膨張処理をさせる方法で詰まったので書いておく。最後に検証に使った全コードがあるのでどうぞ。 CPUで膨張処理をさせるとき、さくっと書けば次のようになる。 cv::Mat src, dst; int width = 256; int height = 256; src = cv::Mat::eye(c…
Visual Studio 2017 x64 で OpenCV 3.4.2 を使う方法 OpenCVをとにかく使いたい。けどNuGetは使えない、使いたくないっていう人のために、この記事の最終更新時点での最新版のインストール方法を書きました。2.4.Xの頃と比べて.libの数が減って設定が楽になりま…
cv::gpu::countNonZeroをgpu::Streamで高速化したいという需要があったので、その解決策を書いておく。 opencvの2系のcountNonZeroはstreamを使うことが出来ない。そのため、非同期処理を行い高速化する際のボトルネックになる。cv::gpu::reduceは2次元画像…