現在、私は医用工学のプロジェクトに取り組んでいます。セルのいくつかのサブイメージを含む大きなイメージがあるので、最初のタスクはイメージを分割することです。
次のことを考えました。
イメージをバイナリに変換する
明るさのピクセルを x 軸に投影して、明るさの値の間にギャップがある場所を確認し、画像を分割します。
問題は、第 2 部に到達しようとしたときに発生します。私の考えは、投影としてベクトルを使用し、1 つの列に沿ってすべての明るさの値を合計することです。したがって、ベクトルの位置番号 0 は、画像の最初の列にあるすべての明るさの値の合計です。最後の列に到達するので、最後に射影があります。
これは私が試した方法です:
void calculo(cv::Mat &result,cv::Mat &binary){ //result=the sum,binary the imag.
int i,j;
for (i=0;i<=binary.rows;i++){
for(j=0;j<=binary.cols;j++){
cv::Scalar intensity= binaria.at<uchar>(j,i);
result.at<uchar>(i,i)=result.at<uchar>(i,i)+intensity.val[0];
}
cv::Scalar intensity2= result.at<uchar>(i,i);
cout<< "content" "\n"<< intensity2.val[0] << endl;
}
}
このコードを実行すると、違反エラーが発生します。もう 1 つの問題は、1 つの一意の行でマトリックスを作成できないことです。そのため、どうすればよいかわかりません。
何か案は?!ありがとう!
最後に、それは機能しません。すべてのピクセルを 1 つの COLUMN に合計する必要があります。やった:
cv::Mat suma(cv::Mat& matrix){
int i;
cv::Mat output(1,matrix.cols,CV_64F);
for (i=0;i<=matrix.cols;i++){
output.at<double>(0,i)=norm(matrix.col(i),1);
}
return output;
}
しかし、それは私に間違いを与えました:マット、ファイル/home/usuario/OpenCV-2.2.0/でアサーションが失敗しました(0 <= colRange.start && colRange.start <= colRange.end && colRange.end <= m.cols) modules/core/src/matrix.cpp、276行目
わかりません。どんなアイデアでも役に立ちます。とにかく、mevatron に感謝します。あなたは本当に私を邪魔してくれました。