[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 |
URL | https://hsp.moe/ |
備考 | #include "OpenCvSharpExtern32.as"
#include "OpenCvSharpExtern64.as" 使用するHSPランタイムのビット数に合わせたインクルードファイルを使用すること |
タイプ | OpenCVSharpラッパーDLL |
グループ | NativeMethods_imgproc |
対応環境 |
|
hs ファイル | hsphelp\OpenCvSharpExtern.hs |