imgproc_calcHist

[32/64bit] 配列の集合のヒストグラムを計算します.

imgproc_calcHist p1,p2,p3,p4,p5,p6,p7,p8,p9,p10

p1 = sptr : IntPtr[] images
p2 = int : int nimages
p3 = var : int[] channels
p4 = sptr : IntPtr mask
p5 = sptr : IntPtr hist
p6 = int : int dims
p7 = var : int[] histSize
p8 = sptr : IntPtr[] ranges
p9 = int : int uniform
p10 = int : int accumulate

(プラグイン / モジュール : OpenCvSharpExtern.dll)

解説

関数 cv::calcHist は,1 つまたは複数の配列のヒストグラムを計算します.ヒストグラムのビンを増加させるために用いられるタプルの要素は,対応する入力配列の同じ位置から取得されます.以下のサンプルは,カラー画像の2次元色相-彩度ヒストグラムを計算する方法を示しています. :#include <opencv2/imgproc.hpp>#include <opencv2/highgui.hpp>using namespace cv;int main( int argc, char** argv ){ Mat src, hsv; if( argc != 2 || !(src=imread(argv[1], 1)).data ) return -1; cvtColor(src, hsv, COLOR_BGR2HSV); // 色相を 30 レベルに,彩度を 32 レベルに量子化します int hbins = 30, sbins = 32; int histSize[] = {hbins, sbins};    // cvtColor を参照してください) float hranges[] = { 0, 180 }; // 彩度は,0(黒-灰色-白)から // 255(純粋なスペクトルカラー)まで変化します.    const float* ranges[] = { hranges, sranges }; MatND hist; // 0 番目と 1 番目のチャンネルからヒストグラムを計算します int channels[] = {0, 1};    calcHist( &hsv, 1, channels, Mat(), // マスクを使用しない hist, 2, histSize, ranges, true, // ヒストグラムは一様です false ); double maxVal=0; minMaxLoc(hist, 0, &maxVal, 0, 0); int scale = 10; Mat histImg = Mat::zeros(sbins*scale, hbins*10, CV_8UC3); for( int h = 0; h < hbins; h++ ) for( int s = 0; s < sbins; s++ ) { float binVal = hist.at<float>(h, s); int intensity = cvRound(binVal*255/maxVal); rectangle( histImg, Point(h*scale, s*scale), Point( (h+1)*scale - 1, (s+1)*scale - 1), Scalar::all(intensity), -1 ); } namedWindow("Source", 1 ); imshow("Source", src ); namedWindow("H-S Histogram", 1 ); imshow("H-S Histogram", histImg ); waitKey();}fragmentExamples: samples/cpp/camshiftdemo.cppとsamples/cpp/demhist.cppです。

元関数名(C#): imgproc_calcHist
元DLLエクスポート名: imgproc_calcHist
参照元CSファイル: Internal\PInvoke\NativeMethods\imgproc\NativeMethods_imgproc.cs
▼ C言語側関数定義
CVAPI(ExceptionStatus) imgproc_calcHist(cv::Mat **images, int nimages,
                              const int* channels, cv::_InputArray *mask,
                              cv::_OutputArray *hist, int dims, const int* histSize,
                              const float** ranges, int uniform, int accumulate)
{
    BEGIN_WRAP
    std::vector<cv::Mat> imagesVec(nimages);
    for (auto i = 0; i < nimages; i++)
        imagesVec[i] = *(images[i]);
    cv::calcHist(&imagesVec[0], nimages, channels, entity(mask), *hist, dims, histSize, ranges, uniform != 0, accumulate != 0);
    END_WRAP
}

情報

プラグイン / モジュールOpenCvSharpExtern.dll
バージョン1.00
作成日2021/11/30
著作者inovia
URLhttps://hsp.moe/
備考#include "OpenCvSharpExtern32.as"
#include "OpenCvSharpExtern64.as"
使用するHSPランタイムのビット数に合わせたインクルードファイルを使用すること
タイプOpenCVSharpラッパーDLL
グループNativeMethods_imgproc
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\OpenCvSharpExtern.hs