Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

opencv

BottleでUSBカメラの動画を配信する簡易サイトをつくる その2:MotionJPEGにOpenCVで細工する

shuzo-kino.hateblo.jp から発展して、OpenCVで加工して出力するようにします 実際のところ 参考もと

AttributeError: module 'cv2.aruco' has no attribute 'detectMarkers'

数カ月前に作ったArUcoアプリを再稼働させたところ AttributeError: module 'cv2.aruco' has no attribute 'detectMarkers' などというエラーが。 ……何もしてないのに壊れた??これ、何のことはなく、別のプロジェクトでOpenCVをアップデートした事が原因で…

二個のArUcoマーカーを角として領域を切り取る その2:領域内のマーカー位置を表示

shuzo-kino.hateblo.jp の続き 実際のところ まず模擬的な移動マーカーを生成 $ composite -geometry 48x48+270+220 ar12.png target.png target_1.png $ composite -geometry 48x48+360+260 ar12.png target.png target_2.png $ composite -geometry 48x48+…

二個のArUcoマーカーを角として領域を切り取る

実際のところ 重心を使いましたが、気になる人は内側の角にするのもよさそう。 import cv2 import numpy as np aruco = cv2.aruco dictionary = aruco.getPredefinedDictionary(aruco.DICT_4X4_50) img_src = cv2.imread("target.png", 1) corners, ids, rej…

ArUcoのマーカーを基準に検知域を表示

ロボットの動作領域など、ある程度範囲は決まっているが当日の状況に応じて少し変更する場合 設定ファイルで細かいパラメータを設定する方法もありますが…… 今回は固定USBカメラからArUcoのマーカーを読み取り、その重心を基準に右下方向に伸びる動作領域を…

RasPi4b + Webcam + ArUcoでARマーカー追従のロボット その3:マーカーの位置によって

実際のところ 前回のをベースに、中心点から一定量以上動いた場合に右か左かを判定するような簡単なのを。 #! /bin/python import cv2 aruco = cv2.aruco img = cv2.imread("1.jpg") dictionary = aruco.getPredefinedDictionary(aruco.DICT_4X4_50) corners…

OpenCVでアナログメーターの角度を読み取る その3:左右対称なメーター

角度を計算するわけですが、左右対称な場合はその方向を判定しないと使いモンになりません。 アプローチは色々ありそうですが、今回は考える事が少ない前半後半の分離というアプローチでやる事にしました。 実際のところ 方針 処理する領域を分けて、 #前半…

OpenCVでアナログメーターの角度を読み取る その1:エッジの検出

ハフ変換という方法で方向を検知できる その前処理として、エッジの検出が必要 実際のところ canny法という手法をつかってエッジの検出をします。 OpenCVではそのまんまCannyというメソッド名で、画像、下限、上限と引数が続きます。 import cv2 import nump…

OpenCVで物体の角度検知を行う

オブジェクトの傾きからパラメーターをとる必要がでてきました。 できればnoOpenCVチャレンジを継続したかったのですが、時間的にそうも言っていられず…… 久々にOpenCVを弄る事に。 実際のところ 考え方 画像を二値化する オブジェクトの領域を区切る オブジ…

RasPi4b + Webcam + ArUcoでARマーカー追従のロボット その2:Python2系で位置情報の取得

shuzo-kino.hateblo.jpの続き。 python3で傾きや位置の情報をとってみます。 実際のところ OpenCVでも当然カメラは使えるのですが……色々とトラウマがあるx*1のでローカルファイルを読み出す方向で実装しました。 #! /bin/python import cv2 aruco = cv2.aruc…

RasPi 3B+ とOpenCVによる色範囲の抽出 その1:HSV色空間のフィルタツールをやってみる

Raspberry Pi 3B+ とWaveshare社OV5648USBカメラをつかって、 MaixBit + MaixPyでやっていた事を再現するという目標。 shuzo-kino.hateblo.jp 実際のところ 公式の閾値サンプルをもとに、一枚の画像の閾値を弄るサンプルとして改編。 import cv2 as cv max_v…

Raspberry Pi 3B+ とPython3な環境に OpenCV環境をつくる

みんな大好きOpenCV。 今回は、OpenCVを Python3 on RasPi3B+ な環境に突っ込んでみます。 (ただし、諸事情によりOpenCVは最新版でなく3.4系を入れます) 実際のところ sudo apt update sudo apt autoremove sudo apt upgrade -y sudo reboot$ sudo apt-get i…

Python3.6 + OpenCV3.1.1で加工範囲を限定してみる

Python3.6 + OpenCV3.1.1で加工範囲を限定してみます。 これで部分的にグレーにしたり、トラ模様にしたり一部分だけテンプレートマッチしたり……という事ができます。 実際のところ shuzo-kino.hateblo.jp import numpy as np import cv2 import sys def func…

Python3.6 + OpenCV3.1.1で対象物を円で囲ってみる

実際のところ 黒背景、対象物は白という状況を作った場合を想定します。 import numpy as np import cv2 import sys def function(target_file): #画像の読み込み img = cv2.imread(target_file) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #二値化によ…

Python3.6 + OpenCV3.1.1でビデオ顔追跡をやってみる

# -*- coding: utf-8 -*- """ OpenCV 3.1.1による顔追跡 """ import cv2 #初期値格納用クラス class DisplayInfomation: pass #第三引数はDisplayInformation def traceFace(cap, cascade, di): _, im = cap.read() #処理速度のためグレー化 gray = cv2.cvtC…

OpenCVの顔画像追跡サンプルで"Assertion failed (!empty()) in detectMultiScale,"とかいうエラーがでたら……学習ファイルの読み込みができていないかも

OpenCVの顔画像追跡サンプルをやってみようとした所、 以下のようなエラーが。 OpenCV Error: Assertion failed (!empty()) in detectMultiScale,...error: (-215) !empty() in function detectMultiScale 例のごとくstack overflowで調べると、学習ファイル…

Python3.6 + OpenCV3.1.1でテンプレートマッチング

実際のところ import cv2 as cv import numpy as np from matplotlib import pyplot as plt import sys def function(pattern_file, threshold_val,): img_rgb = cv.imread('sampleimg.png') img_gray = cv.cvtColor(img_rgb, cv.COLOR_BGR2GRAY) template =…

Python3.6 + OpenCV3.1.1で画像サイズを変える

import cv2 import numpy as np if __name__ == '__main__': # 画像の読み込み。第二引数"1"はグレースケール img_src = cv2.imread("picture.png", 1) # グレースケールに変換 img_gray = cv2.cvtColor(img_src, cv2.COLOR_BGR2GRAY) # 二値変換 #しきい値…

Python3.6 + OpenCV3.1.1で枠線や文字を描いてみる

import cv2 import numpy as np if __name__ == '__main__': # 画像の読み込み。第二引数"1"はグレースケール img_src = cv2.imread("picture.png", 1) # グレースケールに変換 img_gray = cv2.cvtColor(img_src, cv2.COLOR_BGR2GRAY) # 二値変換 #しきい値…

Python3.6 + OpenCV3.1.1で画像の二値化をする

Python3.6 + OpenCV3.1.1で画像の二値化をする方法です 実際のところ import cv2 import numpy as np if __name__ == '__main__': # 画像の読み込み。第二引数"1"はグレースケール img_src = cv2.imread("picture.png", 1) # グレースケールに変換 img_gray …

Python3.6 + OpenCV3.1.1でUSBカメラの画像をとる

実際のところ 環境はmacOSですが、winやlinux系でも基本は変わらないかと思われます。これまでpipを使ってましたが、環境変数まわりの崩壊が怖いので放棄。 新たにminicondaを入れます。 Miniconda — Conda からダウンロード用スクリプトを持ってきて、実行…

rubyでopenCVを使う

rubyでも画像処理の定番ライブラリopenCVを使うことができます。 導入 まずopenCVがなければ導入します。 $ brew install opencv次に、gem「ruby-opencv」を入れます。 導入時にライブラリのインストール先を指示する必要があります。 brewで導入した場合は…