hspcv4
Version 0.1
Date 2026/04/12
Author HNWorks / IronHSP
目次 (45 グループ / 275 ページ)
hspcv4 calib3d
cv4_camera_matrix
カメラ内部行列の生成
3x3 のカメラ内部行列 K = [[fx,0,cx],[0,fy,cy],[0,0,1]] を CV_64F Mat
として生成します。
cv4_dist_coeffs
歪み係数ベクトルの生成
1x5 の歪み係数ベクトル D = [k1, k2, p1, p2, k3] を CV_64F Mat として生成。
cv4_find_chessboard_corners
チェスボードコーナーの検出
cv::findChessboardCorners でカメラキャリブレーション用のチェスボード
内側コーナーを検出します。検出失敗時は stat に非 0。
結果は Nx2 CV_32F の Mat に格納されます。
cv4_project_points
3D点を2Dに投影
cv::projectPoints で 3D 点群を rvec/tvec/K/D に従って 2D 画像座標に
投影します。
cv4_rodrigues
回転ベクトル <-> 回転行列
cv::Rodrigues。3x1 の回転ベクトル → 3x3 回転行列、または逆方向。
入力が float/double でない場合は自動的に CV_64F に変換します。
cv4_solve_pnp
3D-2D 対応からの姿勢推定
cv::solvePnP で 3D 点群と対応する 2D 投影点から、カメラの回転と
並進を推定します。出力 rvec/tvec は 3x1 CV_64F。
AR 等で物体の姿勢を求めるのに使用。
cv4_undistort
画像の歪み補正
cv::undistort で K と D に基づいて画像の歪みを補正します。
レンズ補正後の正規化画像が得られます。
hspcv4 contrib
cv4_contrib_version
hspcv4_contribのバージョン取得
hspcv4_contrib.dll が同じフォルダにあるかを確認するためのテスト関数。
contrib DLL がロードできた場合は OpenCV のバージョンと
"(hspcv4_contrib loaded)" を返します。
hspcv4 contrib DNN
cv4_dnn_sr_create
超解像モデルの読み込み
cv::dnn_superres::DnnSuperResImpl による超解像 DNN モデルを読み込みます。
hspcv4 contrib トラッカ
cv4_tracker_create_csrt
CSRTトラッカの生成
cv::TrackerCSRT::create による Discriminative Correlation Filter with
Channel and Spatial Reliability tracker。高精度だがやや重い。
cv4_tracker_create_kcf
KCFトラッカの生成
cv::TrackerKCF::create による Kernelized Correlation Filter tracker。
CSRT より高速で、リアルタイム追跡向けのバランス型。
hspcv4 contrib ハッシュ
cv4_average_hash
aHash (平均ハッシュ)
cv::img_hash::averageHash。最も単純な平均ベースのハッシュ。
出力は 1x8 = 64bit。
cv4_phash
pHash (DCT ベース)
cv::img_hash::pHash。DCT ベースのパーセプチュアルハッシュ。
リサイズや軽い色調整に頑健。出力は 1x8 = 64bit。
hspcv4 contrib フィルタ
cv4_guided_filter
ガイデッドフィルタ
cv::ximgproc::guidedFilter。エッジ保存スムージングの代表格。
バイラテラルフィルタより高速で高品質。
cv4_l0_smooth
L0勾配最小化スムージング
cv::ximgproc::l0Smooth。Image abstraction や cartoonization に有効。
cv4_niblack
Niblack 適応二値化
cv::ximgproc::niBlackThreshold による Niblack 法の適応二値化。
古文書等のスキャン画像の OCR 前処理に強い。
cv4_thinning
細線化 (skeletonization)
cv::ximgproc::thinning による 2 値画像の細線化 (1 ピクセル幅まで)。
文字認識の前処理などに使用します。
cv4_weighted_median
重み付きメジアンフィルタ
cv::ximgproc::weightedMedianFilter。joint 画像のエッジで重み付けする
メジアンフィルタ。
hspcv4 contrib 動画解析
cv4_bgsub_create_cnt
CNT背景差分の生成
cv::bgsegm::createBackgroundSubtractorCNT。Counting based の高速 BGS。
組み込み機器向けに最適化されています。
cv4_bgsub_create_gmg
GMG背景差分の生成
cv::bgsegm::createBackgroundSubtractorGMG。Godbehere-Matsukawa-Goldberg
の手法。長期間の背景モデル学習向け。
cv4_bgsub_create_gsoc
GSOC背景差分の生成
cv::bgsegm::createBackgroundSubtractorGSOC。Generalized Subtraction-on-
Codebook、Google Summer of Code 採用の高性能背景差分。
cv4_bgsub_create_lsbp
LSBP背景差分の生成
cv::bgsegm::createBackgroundSubtractorLSBP。Local Binary Similarity
Pattern を使用した背景差分。
cv4_bgsub_create_mog
MOG背景差分の生成
cv::bgsegm::createBackgroundSubtractorMOG。オリジナルの MOG (MOG2 の前身)。
軽量で組み込み向け。
cv4_optflow_dualtvl1
Dual TV-L1 オプティカルフロー
cv::optflow::createOptFlow_DualTVL1。高精度な dense optical flow の
定番。Farneback より精度高い (が遅い)。
hspcv4 contrib 特徴点
cv4_brief_compute
BRIEF記述子の計算
cv::xfeatures2d::BriefDescriptorExtractor。Binary Robust Independent
Elementary Features 記述子を計算します。コンパクトでマッチング高速。
cv4_daisy_compute
DAISY記述子の計算
cv::xfeatures2d::DAISY。SIFT に近い精度で高速な記述子。
密マッチング (dense matching) にも適しています。
cv4_freak_compute
FREAK記述子の計算
cv::xfeatures2d::FREAK。Fast Retina Keypoint 記述子。
人間の網膜に着想を得たサンプリングパターンを使用。
内部で keypoints を一部フィルタリングするので kp_id の中身が変化します。
cv4_harris_laplace_detect
Harris-Laplace特徴点検出
cv::xfeatures2d::HarrisLaplaceFeatureDetector による Harris コーナー
+ Laplacian スケール選択。スケール不変のコーナー検出。
cv4_star_detect
Star特徴点検出
cv::xfeatures2d::StarDetector::create による CenSurE スケール不変
特徴点検出。記述子は別途 cv4_brief_compute / cv4_freak_compute /
cv4_daisy_compute と組み合わせて使用します。
hspcv4 FreeType
cv4_freetype_create
FreeType 生成
cv::freetype::FreeType2 を生成し、指定フォントを読み込みます。
cv4_freetype_put_text で日本語等のテキスト描画が可能になります。
cv4_freetype_put_text
FreeType テキスト描画
FreeType 経由で TTF/OTF フォントによる高品質テキスト描画を行います。
cv::putText と異なり日本語等の非 ASCII 文字も描画できます。
hspcv4 Hough 変換
cv4_hough_circles
Hough 円検出
cv::HoughCircles で円を検出します。結果は Nx3 の CV_32F Mat
(cx, cy, radius)。内部で HOUGH_GRADIENT モードを使用。
cv4_hough_lines
Hough 直線検出
cv::HoughLines で直線を検出します。結果は Nx2 の CV_32F Mat
(rho, theta の対) として返されます。cv4_mat_shape と
cv4_mat_getf で読んでください。
cv4_hough_linesp
確率的 Hough 直線検出
cv::HoughLinesP。通常の HoughLines より速く、結果は
Nx4 の CV_32S Mat (x1, y1, x2, y2) として返されます。
hspcv4 Mat アクセッサ
cv4_get_pixel
ピクセル値の読み取り (BGR 3 チャンネル)
CV_8UC1 / CV_8UC3 / CV_8UC4 のいずれかの Mat から BGR 3 チャンネルを読み取り、
3 つの int 変数に格納します。
cv4_get_pixela
ピクセル値の読み取り (BGRA 4 チャンネル)
CV_8UC4 の Mat からアルファを含めた 4 チャンネルを読み取ります。
cv4_mat_getf
Mat の浮動小数点ピクセル値取得
浮動小数点型 (CV_32F / CV_64F) の Mat から (row, col) のピクセル値を
取得し、値 × 10000 の int 固定小数点として var_value_x10000 に格納します。
HSP 側で /10000.0 で double に戻してください。
cv4_mat_geti
Mat の整数ピクセル値取得
整数型 (CV_8U / CV_8S / CV_16U / CV_16S / CV_32S) の Mat から
(row, col) のピクセル値を int 変数に格納します。1ch 専用。
cv4_mat_shape
Mat のサイズ情報取得
Mat の行数、列数、型、チャネル数を 4 つの int 変数に格納します。
Hough 結果や DNN 出力など、何が入っているか分からない Mat の
形を調べるのに使います。
cv4_min_max_loc
Mat の最小値・最大値と位置
cv::minMaxLoc で Mat の最小/最大値とその座標を取得します。
値は x10000 固定小数点 (HSP int)、座標は普通の int です。
cv4_match_template の結果から最適位置を求めるのに使います。
cv4_put_pixel
ピクセル値の書き込み
CV_8UC1 / CV_8UC3 / CV_8UC4 の Mat の特定画素に値を書き込みます。
hspcv4 Mat 演算
cv4_abs_diff
Mat の絶対差分
cv::absdiff(a, b)。|a - b| を計算。動体検知などに使用。
cv4_add
Mat の加算
cv::add(a, b)。飽和演算付き (0..255 にクランプ)。
cv4_add_scalar
スカラーの加算
cv::add(src, Scalar(b, g, r))。src の各画素に一様な値を加算。
cv4_add_weighted
重み付き加算
cv::addWeighted。dst = a * alpha + b * beta + gamma。
画像のブレンドやクロスフェードに。
cv4_compare
要素ごとの比較
cv::compare。条件を満たす画素は 255、それ以外は 0 の Mat を返します。
cv4_copy_masked
マスク付きコピー
cv::Mat::copyTo(dst, mask)。mask の非 0 部分のみ src を dst に
コピーします。dst が空でなければ既存の内容を保持します。
cv4_div
Mat の除算
cv::divide。要素ごとの除算。
cv4_mat_clone
Mat の複製
cv::Mat::clone による独立コピー。元の src を変更しても dst に
影響しません。
cv4_mat_full
指定色で塗りつぶした Mat の作成
3ch CV_8U の Mat を作成して Scalar(b, g, r) で塗りつぶします。
cv4_merge
チャネル結合
cv::merge。1ch 画像 3 枚を 1 つの 3ch 画像に結合します。
cv4_mul
Mat の乗算
cv::multiply。要素ごとの乗算。
cv4_split
チャネル分離
cv::split。3ch の画像を B/G/R の 1ch 画像 3 枚に分解します。
cv4_sub
Mat の減算
cv::subtract(a, b)。飽和演算付き。
hspcv4 OCR
cv4_ocr_create
Tesseract OCR 生成
cv::text::OCRTesseract を生成します。
tessdata フォルダに対応する traineddata ファイルが必要です。
cv4_ocr_run
Tesseract OCR 実行
Tesseract で入力画像の文字認識を実行し、結果文字列を返します。
cv4_text_detect_swt
Stroke Width Transform 文字検出
cv::text::detectTextSWT による Stroke Width Transform 文字検出。
Tesseract 等の OCR 依存なしで動作します。
hspcv4 photo
cv4_decolor
カラー→グレー変換 (知覚ベース)
cv::decolor。BGR2GRAY より知覚的に良好なグレー画像を生成します。
cv4_seamless_clone
シームレスクローン
cv::seamlessClone。src の mask 部分を dst_base の (cx, cy) 中心に
シームレスに合成します。パスパウェル合成の OpenCV 実装。
hspcv4 QR/バーコード
cv4_wechat_qr_decode
WeChat QR コード検出
cv::wechat_qrcode::WeChatQRCode による高精度 QR コード検出。
小さく歪んだ QR コードも検出可能です。現時点では個数のみ返します。
hspcv4 Saliency
cv4_saliency_fine
Fine-Grained Saliency
cv::saliency::StaticSaliencyFineGrained による
細粒度サリエンシマップ計算。
cv4_saliency_spectral
Spectral Residual Saliency
cv::saliency::StaticSaliencySpectralResidual による
スペクトル残差法のサリエンシマップ計算。
hspcv4 xphoto
hspcv4 その他
cv4_build_version
OpenCV のバージョン文字列取得
cv::getVersionString() でビルドされている OpenCV のバージョン
(例: "4.12.0") を str 変数に格納します。
hspcv4 ウィンドウ
cv4_create_trackbar
トラックバー生成
cv::createTrackbar のラッパー。HSP からはコールバック登録が
できないため、コールバック無しで生成します。値の取得は
cv4_get_trackbar_pos を使います。
cv4_get_mouse_event
マウスイベント取得
cv4_set_mouse_listener で蓄積された最新マウスイベントを読み出します。
var を先に並べることで OLDDLL パラメータ消費順を安定させます。
hspcv4 カラーマップ
cv4_apply_color_map
カラーマップ適用
cv::applyColorMap のラッパー。グレースケール画像に OpenCV 組み込みの
12 種類のカラーマップを適用して疑似カラー化します。
hspcv4 ステレオ
hspcv4 セグメンテーション
cv4_grab_cut
GrabCut 前景抽出
cv::grabCut のラッパー。矩形またはマスクで前景候補を指定し、
反復的に前景/背景を抽出します。
cv4_watershed
Watershed セグメンテーション
cv::watershed による領域分割を実行します。
事前にシードとなるマーカを markers に書き込んでおく必要があります。
hspcv4 トラッキング
cv4_kalman_create
Kalman フィルタ生成
cv::KalmanFilter を生成します。例: 2D 等速モデルなら dynam=4 (x,y,vx,vy), measure=2 (x,y)。
hspcv4 ヒストグラム
cv4_clahe
適応的ヒストグラム平坦化 (CLAHE)
cv::createCLAHE による適応的ヒストグラム平坦化。
画像を小さいタイルに分割し、各タイルで個別に平坦化を行うため、
明暗差の大きい画像でも局所的なコントラスト改善が期待できます。
cv4_equalize_hist
ヒストグラム平坦化
cv::equalizeHist でグレースケール画像のコントラストを平坦化します。
入力がカラーの場合は内部でグレースケールに変換します。
cv4_lut
ルックアップテーブル変換
cv::LUT による画素値変換。lut_var[入力値] が出力値になります。
γ補正、色反転、特定の色域調整などに使用します。
cv4_normalize
正規化
cv::normalize。MINMAX の場合は [alpha, beta] の範囲に線形スケーリング、
L1/L2 の場合は alpha をノルム値として正規化します。
hspcv4 ビット演算
hspcv4 フィルタ
cv4_am_filter
Adaptive Manifold フィルタ
cv::ximgproc::amFilter によるエッジ保存平滑化。
Adaptive Manifold Filter は bilateral filter の高速近似です。
hspcv4 フィルタ命令
cv4_adaptive_thresh
適応二値化
cv::adaptiveThreshold。画像全体で 1 つのしきい値ではなく、
局所領域ごとにしきい値を決めて 2 値化します。
照明ムラのある画像の 2 値化に強いです。
cv4_bilateral
バイラテラルフィルタ
cv::bilateralFilter。エッジを保存しつつ平滑化する高級フィルタ。
cv4_denoise
ノイズ除去 (Non-Local Means)
cv::fastNlMeansDenoising(Colored)。チャネル数に応じて自動選択します。
h は強度パラメータ (10 前後が標準)。
cv4_distance_transform
距離変換
cv::distanceTransform。src は 8-bit 1ch の 2 値画像を想定。
各前景ピクセルから最寄りの背景ピクセルまでの距離を計算して
0..255 に正規化します。
cv4_filter2d_3x3
3x3任意カーネル畳み込み
3x3 任意カーネルで畳み込みを実行します。9 つのカーネル要素を直接 double で
指定し、最後に delta (オフセット) を渡します。
cv4_filter2d_mat
任意サイズMatカーネルで畳み込み
カーネルを Mat ハンドルで指定する版。cv4_imread_flags で float 画像を
読み込むなどして任意サイズのカーネルを使えます。
cv4_inpaint
画像の修復 (インペイント)
cv::inpaint。mask の非 0 部分を周囲から補間して修復します。
傷消し、ロゴ消しなどに使用。
cv4_match_template
テンプレートマッチング
cv::matchTemplate。src の中で templ と一致する位置を探索します。
結果は類似度マップで、最大(または最小)値の座標を
cv4_min_max_loc で取得します。
cv4blur
平均ぼかし
cv::blur を呼んで画像を平均ぼかしします。
dst_id と src_id は同じハンドルでも構いません。
cv4canny
Canny エッジ検出
cv::Canny によるエッジ検出。
src はあらかじめ cv4cvt で CV4_BGR2GRAY によりグレースケール化
しておくことを推奨します。
出力は 1ch の 2 値画像 (エッジ = 255、それ以外 = 0) になります。
cv4gauss
ガウシアンぼかし
cv::GaussianBlur によるガウシアンぼかし。
ksize が偶数だった場合は自動的に奇数に補正されます。
cv4median
メジアンフィルタ
cv::medianBlur によるメジアンフィルタ。
ごま塩ノイズの除去に効果があります。
hspcv4 プロット
cv4_plot
1次元データのグラフ描画
cv::plot::Plot2d により 1 次元データを 2D グラフ画像 (BGR) として描画します。
hspcv4 モルフォロジー
cv4_dilate
モルフォロジー膨張
cv::dilate による膨張フィルタ。前景が広がります。
細線のつながりを太らせる、輪郭の穴埋めなどに使います。
cv4_erode
モルフォロジー収縮
cv::erode による収縮フィルタ。前景 (明るい領域) が縮みます。
ノイズ除去、対象の輪郭分離などに使います。
cv4_morph_blackhat
ブラックハット変換
cv::morphologyEx(MORPH_BLACKHAT)。クロージングと src の差分。
暗い小さい物体を抽出するのに使います。
cv4_morph_close
クロージング (膨張→収縮)
cv::morphologyEx(MORPH_CLOSE)。前景内の小さい穴の埋めに効果的。
cv4_morph_open
オープニング (収縮→膨張)
cv::morphologyEx(MORPH_OPEN)。小さいノイズ点の除去に効果的。
cv4_morph_tophat
トップハット変換
cv::morphologyEx(MORPH_TOPHAT)。src とオープニングの差分。
明るい小さい物体を抽出するのに使います。
hspcv4 動画解析
cv4_bgsub_apply
背景差分の適用
入力フレーム src に背景差分を適用し、前景マスクを fg_mask に
格納します。learning_rate は -1 で自動。
cv4_optflow_farneback
Farneback 密オプティカルフロー
cv::calcOpticalFlowFarneback。2 枚のフレーム間のすべての画素の
動きベクトルを計算します。結果は HxWx2 の CV_32F Mat
(dx, dy) として返されます。
cv4_optflow_lk
Lucas-Kanade 疎オプティカルフロー
cv::calcOpticalFlowPyrLK。prev_kp のキーポイントを次フレームで
追跡した結果を out_kp に格納し、追跡成否 (1=成功/0=失敗) を
status_mat に Nx1 CV_8U として格納します。
cv4_tracker_create_mil
MIL トラッカの生成
cv::TrackerMIL::create。Multiple Instance Learning ベースの
オンライン学習トラッカ。OpenCV 4.x の main モジュールに含まれる
唯一のライブラリトラッカです (KCF/CSRT は contrib 同梱)。
hspcv4 勾配オペレータ
cv4_laplacian
ラプラシアン
cv::Laplacian で 2 階微分のエッジを計算。convertScaleAbs で正規化。
cv4_scharr
Scharr 勾配
cv::Scharr で勾配を計算。ksize=3 の Sobel より精度の高い
オペレータです。内部で convertScaleAbs で正規化します。
cv4_sobel
Sobel 勾配
cv::Sobel で x / y 方向の勾配を計算。内部で convertScaleAbs により
CV_8U に正規化して返します。
hspcv4 基本命令
cv4_imdecode
メモリバッファから Mat を復元
cv::imdecode。size バイトのバイナリデータから Mat を復元します。
netload で取得した PNG/JPEG バイト列を直接 Mat にできます。
cv4_imencode
Mat をメモリバッファにエンコード
cv::imencode。Mat を指定フォーマットでメモリにエンコードします。
PNG 等には NUL バイトが含まれるので strlen で長さを測れません。
必ず var_size の値を使って後続の cv4_imdecode に渡してください。
cv4_imread_flags
フラグ指定付き画像読み込み
cv4load のフラグ指定版。GRAYSCALE を指定すると 1ch 画像として
読み込みます。UNCHANGED はアルファチャネルも含めて読み込みます。
cv4cvt
色空間の変換
src_id の画像を指定した色空間コードで変換し、結果を dst_id に格納します。
dst_id と src_id は同じハンドルでも構いません。
cv4del
画像ハンドルの解放
指定したハンドル ID に割り当てられていた画像リソースを解放します。
存在しない ID を指定しても害はありません (no-op)。
cv4getimg
HSP画面への転送
ハンドル ID の画像を HSP のカレントウィンドウの左上 (0,0) に
貼り付けます。pos 命令の位置は無視されます。
グレースケールや BGRA は自動で 3ch BGR に変換されます。
HSP の DIB 形式 (bottom-up) に合わせて上下反転も自動で行います。
cv4info
画像情報の取得
画像ハンドルの幅・高さ・チャンネル数を 3 つの int 変数に格納します。
チャンネル数は通常 1 (グレースケール) または 3 (BGR カラー)。
cv4load
画像ファイルの読み込み
画像ファイルを読み込んで int ハンドル ID に格納します。
ファイル形式は PNG / JPEG / BMP / TIFF / WebP / OpenJPEG が
静的リンクで利用可能です。
読み込み後の画像は元ファイルに従います。
cv4putimg
HSP画面からの取り込み
HSP のカレントウィンドウの内容をそのまま BGR カラー画像として
id に取り込みます。HSP の DIB 形式 (bottom-up) は自動で
上下反転され、OpenCV 側では top-down な通常の cv::Mat になります。
cv4reset
全ハンドルの解放
すべての画像ハンドルを解放し、開いている OpenCV ウィンドウを
すべて閉じます。プログラム終了時やリセット時に使用します。
cv4resize
画像のリサイズ
src_id の画像を new_w x new_h にリサイズして dst_id に格納します。
補間は双線形 (INTER_LINEAR) 固定です。
cv4save
画像ファイルの保存
ハンドル ID の画像を指定したファイルに保存します。
拡張子 (.png / .jpg / .bmp 等) で自動的にフォーマットが決まります。
失敗時は stat に非 0 のエラーコードが入ります。
hspcv4 幾何
cv4_peilin_normalize
PeiLin 正規化
cv::ximgproc::PeiLinNormalization による画像のアフィン正規化を計算します。
出力は 2x3 のアフィン変換行列です。
hspcv4 幾何変換
cv4_find_homography
ホモグラフィの推定
cv::findHomography (RANSAC ベース)。対応点ペアから 3x3 の
透視変換行列を推定します。cv4_bf_match の結果から使えます。
cv4_pyr_down
画像ピラミッド縮小
cv::pyrDown により src を 1/2 に縮小 (ガウシアンブラー経由)。
cv4_pyr_up
画像ピラミッド拡大
cv::pyrUp により src を 2 倍に拡大 (ガウシアンブラー経由)。
cv4crop
画像の切り抜き
src_id の (x, y) から (w x h) の矩形を切り抜き、dst_id に独立な
Mat として格納します。範囲外を指定した場合はエラーになります。
cv4rotate
中心回転
画像の中心を軸として angle 度の回転 + scale 倍の拡縮を行います。
出力サイズは入力と同じ (はみ出した部分は切り捨て)。
cv4warp
アフィン変換
2x3 のアフィン行列を直接指定して cv::warpAffine を呼びます。
任意の出力サイズを指定できるので、平行移動やせん断にも使えます。
hspcv4 描画命令
cv4line
直線の描画
ハンドル ID の画像に直線を描画します。
色は OpenCV の慣習に合わせて B, G, R の順で指定してください。
cv4rect
矩形の描画
ハンドル ID の画像に矩形を描画します。
thickness に -1 を渡すと塗りつぶしになります。
cv4text
テキストの描画
ハンドル ID の画像に文字列を描画します。
フォントは HERSHEY_SIMPLEX 固定です。
日本語などの非 ASCII 文字は表示できません (文字化けします)。
LINE_AA によるアンチエイリアスが有効になっています。
hspcv4 機械学習
cv4_ml_ann_create
ANN-MLP モデル生成
cv::ml::ANN_MLP (多層パーセプトロン) を生成します。
例: 入力3/中間5/出力2 なら [3,5,2] を Mat で渡します。
cv4_ml_load
ML モデル読み込み
保存済み ML モデルを読み込みます。algo_type を正しく指定する必要があります。
cv4_ml_predict
ML モデル予測
学習済みモデルで予測を実行します。cv::ml::StatModel::predict のラッパー。
cv4_ml_svm_create
SVM モデル生成
cv::ml::SVM を生成します。type と kernel の既定値はそれぞれ C_SVC / RBF。
学習は cv4_ml_train、予測は cv4_ml_predict を使用します。
cv4_ml_train
ML モデル学習
ML モデル共通の学習関数。内部で cv::ml::StatModel::train を呼びます。
hspcv4 物体検出
cv4_aruco_detect
ArUcoマーカ検出
cv::aruco::ArucoDetector で ArUco マーカを検出します。
検出した各マーカの外接矩形を rects_array に、ID を ids_array に格納します。
cv4_aruco_generate
ArUcoマーカ画像の生成
cv::aruco::generateImageMarker で指定 ID のマーカ画像を生成します。
印刷して撮影 → cv4_aruco_detect で読み取りという流れで使えます。
cv4_hog_detect_people
HOG 人物検出
cv::HOGDescriptor + getDefaultPeopleDetector。
組み込みの人物検出用 SVM で検出を行います。
結果は cv_rect 配列に書き込まれます (Phase 2e の cv4_detect と同じ形式)。
cv4_qr_decode
QR コードの検出とデコード
cv::QRCodeDetector::detectAndDecode。空文字列の場合は検出失敗または
空の QR コードを意味します。
cv4_qr_detect
QR コードの検出
cv::QRCodeDetector::detect。検出された QR コードの外接矩形を
cv_rect 配列に格納します。
cv4_stitch
パノラマ合成
cv::Stitcher::PANORAMA モードで複数画像からパノラマ画像を合成します。
画像間で十分な重なり (20% 以上) と特徴点が必要です。
hspcv4 特徴検出
cv4_fast_line_detect
FastLineDetector 直線検出
cv::ximgproc::FastLineDetector による高速直線検出。
LSD の代替として使用できます。
cv4_msd_detect
MSD 検出器
cv::xfeatures2d::MSDDetector による特徴検出。Maximally Stable Detector。
hspcv4 特徴点
cv4_bf_match
総当たりマッチング
cv::BFMatcher (crossCheck=true) で 2 つの記述子集合をマッチング
します。結果は match set として match_id に格納されます。
cv4_corner_harris
Harris コーナー応答
cv::cornerHarris。コーナー応答値を計算した Mat を返します。
しきい値処理で実際のコーナー位置を取り出します。
cv4_good_features_to_track
コーナー検出 (Shi-Tomasi)
cv::goodFeaturesToTrack。良好なコーナー候補を検出して
キーポイント集合として kp_id に格納します。オプティカルフロー
(cv4_optflow_lk) の入力として使うことができます。
cv4_kp_get
特定キーポイントの情報取得
キーポイント[idx] の座標、スケール、主軸方向、検出応答を
それぞれ固定小数点で返します。
cv4_orb_detect_compute
ORB 特徴点検出
cv::ORB::create で検出器を生成し detectAndCompute を呼びます。
キーポイント集合を kp_id、記述子 Mat を desc_id に格納します。
hspcv4 玄人向け
cv4_cascade_load
カスケード分類器の読み込み
cv::CascadeClassifier::load を呼んでカスケード分類器をロードします。
標準の Haar cascade XML は OpenCV の
build/opencv_install_XX/etc/haarcascades/ ディレクトリに入っています。
cv4_close_all
全てのOpenCVウィンドウを閉じる
cv::destroyAllWindows で開いているすべての OpenCV ウィンドウを
閉じます。
cv4_detect
物体検出の実行
cascade.detectMultiScale を呼んで物体検出を実行します。
検出結果の矩形を rects_array に書き込み、検出数を var_count に
格納します。rects_array のサイズを超えた分は切り捨てられます。
cv4_dnn_argmax
分類結果のargmax取得
出力 blob を 1 行に reshape して argmax を計算し、最大値のクラス
index をスコアを返します。
スコアは HSP の int に収まるよう スコア×10000 の固定小数点で
返されます。
cv4_dnn_forward
推論の実行
cv::dnn::Net::forward を呼んで推論を実行し、結果の blob を
Mat ハンドルとして保存します。
分類タスクの場合は出力 blob は通常 [1, N] (N = クラス数) で、
続けて cv4_dnn_argmax で最大スコアのクラスを取得できます。
cv4_dnn_load
ONNXモデルの読み込み
cv::dnn::readNetFromONNX で ONNX モデルを読み込みます。
cv4_dnn_load_darknet
Darknet (YOLO) モデルの読み込み
cv::dnn::readNetFromDarknet で YOLO 系 Darknet モデルを読み込みます。
cv4_dnn_load_tf
TensorFlowモデルの読み込み
cv::dnn::readNetFromTensorflow で TensorFlow .pb モデルを読み込みます。
config (pbtxt) は省略可能です。
cv4_dnn_nms_boxes
Non-Maximum Suppression
cv::dnn::NMSBoxes による Non-Maximum Suppression。重なりの大きい矩形を
スコアに基づいて抑制します。YOLO 等の検出後処理で必須。
cv4_dnn_set_backend
DNN バックエンド/ターゲット選択
推論バックエンドとターゲットデバイスを指定します。CUDA が利用可能な
環境では GPU 推論で大幅高速化できます。
cv4_dnn_set_input
入力画像の前処理とセット
cv::dnn::blobFromImage で画像を 4D テンソル (1, C, H, W) に変換し、
Net::setInput で入力レイヤにセットします。
cv4_show
OpenCVウィンドウに表示
ハンドル ID の画像を OpenCV のウィンドウに表示します (非ブロッキング)。
ウィンドウが存在しなければ cv::namedWindow で新規作成されます。
内部で cv::pollKey を 1 回呼んで即座に描画更新します。
cv4_video_info
動画情報の取得
VideoCapture の幅・高さ・fps・総フレーム数を 4 つの int 変数に
格納します。カメラなど一部のソースでは var_total = 0 になります。
cv4_video_open
動画ソースを開く
cv::VideoCapture::open でカメラまたは動画ファイルを開きます。
"0" / "1" のように数字のみの文字列を指定するとカメラ index として
扱われ、それ以外はファイルパスとして扱われます。
cv4_video_read
1フレームを読み出す
1 フレームを読み出して frame_id に格納します。
stat = 0 で成功、stat = 1 で終端 (ファイル終了や読込失敗) です。
cv4_wait_key
キー入力の待機
OpenCV ウィンドウ上でのキー入力を待ちます。
cv::pollKey を 10ms 周期でポーリングする実装のため、HSP の
メインウィンドウのメッセージポンプとは競合しません。
cv4_writer_open
動画ファイルへの書き出し開始
cv::VideoWriter::open で動画ファイルを書き出し用に開きます。
注意: OpenCV 静的ビルドで FFmpeg を含まない場合、利用できる
コーデックが限られます (MJPG が動かない環境もあります)。
cv4_writer_write
1フレームを書き込む
指定フレームを動画ファイルに書き込みます。
フレームのサイズは cv4_writer_open で指定したサイズと一致する
必要があります。
hspcv4 画質評価
cv4_quality_psnr
PSNR 画質評価
cv::quality::QualityPSNR による Peak Signal-to-Noise Ratio 計算。
cv4_quality_ssim
SSIM 画質評価
cv::quality::QualitySSIM による Structural Similarity Index 計算。
0..1 の値を x10000 倍した整数で返します。
hspcv4 統計
cv4_count_nonzero
非ゼロ画素数
cv::countNonZero。画像内の値が 0 でない画素の数を返します。
カラー画像の場合はグレースケールに変換してから計算します。
cv4_mean
平均値
cv::mean。チャネルごとの平均値を x10000 固定小数点で返します。
1ch 画像の場合は var_mean_b にのみ有効値が入ります。
cv4_sum
合計値
cv::sum。チャネルごとの合計値を int でそのまま格納します
(オーバーフローに注意)。
hspcv4 行列演算
cv4_dct
離散コサイン変換
cv::dct のラッパー。離散コサイン変換を計算します。
cv4_dft
離散フーリエ変換
cv::dft のラッパー。離散フーリエ変換を計算します。
フラグで DFT_INVERSE / DFT_COMPLEX_OUTPUT 等を指定できます。
cv4_in_range
範囲内マスク生成
cv::inRange による色範囲抽出。BGR 各チャネルの上下限から
2 値マスクを生成します。色抽出などに使用します。
cv4_kmeans
k-means クラスタリング
cv::kmeans によるクラスタリング。
各サンプルのクラスタラベルと中心を計算します。
hspcv4 輪郭解析
cv4_approx_poly_dp
多角形近似
cv::approxPolyDP。Douglas-Peucker アルゴリズムで輪郭を多角形に
単純化します。結果は dst_cid に 1 つの輪郭として格納されます。
cv4_contour_hier_get
階層情報の取得 (helper)
特定の輪郭の階層関係を 4 つの int 変数に格納します。
cv4_mat_geti でも読めますが、こちらの方が直接的です。
cv4_find_contours
輪郭の検出
cv::findContours で輪郭集合を検出し、cid に格納します。
検出後は cv4_contours_count と各種アクセッサで個々の輪郭を
参照できます。
cv4_find_contours_hier
階層情報付き輪郭検出
cv::findContours の階層情報付き版。各輪郭について
[next, prev, first_child, parent] のインデックスが hierarchy_mat に
Nx4 CV_32S Mat として格納されます。なしは -1。
cv4_min_area_rect
最小面積外接矩形
cv::minAreaRect。輪郭を囲む最小面積の回転矩形。中心 / サイズは x10、
角度は x100 の固定小数点で返します。
cv4_moments
モーメントから重心と面積
cv::moments。重心座標を x10 固定小数点で、0 次モーメント
(面積 m00) を int で返します。
hspcv4 顔認識
cv4_facemark_create
Facemark 生成
cv::face::Facemark (顔ランドマーク検出器) を生成します。
LBF または Kazemi アルゴリズムから選択します。