2016-04-20 10 views
1

しきい値付き(バイナリ)イメージの各列の合計を計算しようとしているときに、OpenCVで立ち往生しました。各列の合計を計算するための関数を減らす

このコード

Mat thrs; 
threshold(roi, thrs, 252, 255, THRESH_BINARY); 
Mat dy; 
reduce(thrs, dy, 1, CV_REDUCE_SUM); 

は私に

OpenCV Error: Unsupported format or combination of formats 

を述べるランタイムエラーを与える従って私はdyが同じ形式であると保持することはできません、これはCV_8UC1形式にあるバイナリイメージによるものであると仮定します合計された値。これは正しいです?その周りには何がありますか?

答えて

2

あなたが最後のパラメータdtypeと先行列がcv::reduceが初期化されていない指定しなかった場合dtype等しい入力すると仮定しますソースマトリックスの。あなたの場合はCV_8UC1になります。この形式では合計値を格納できないため、ランタイムエラーが発生します。

このエラーを回避するには、dtypeパラメータを指定する必要があります。たとえば、

reduce(thrs, dy, 1, CV_REDUCE_SUM, CV_32SC1); 
1

reduce関数は、出力として32S32F64Fのみをサポートします。これはreduce関数のドキュメントにはありませんが、そのようなものです...デフォルトでは、入力と同じ型を取ろうとします。だから、あなたはこのような何かをやってみてください可能性があります

cv::reduce(thrs, dy, 1, CV_REDUCE_SUM, CV_32S); 

ちょうどリマインダー:

32S is int 
32F is float 
64F is float 
関連する問題