【发布时间】:2014-09-09 23:17:09
【问题描述】:
我正在尝试使用 EmguCV 在通道 H 中进行像素计数,大多数在 C ++ 中都有此代码,并且希望将 EmguCV c ++ 的部分转换为 C#,尤其是部分 uchartone = comp [ 0] .at (i, j);这让我很头疼,如果你能帮助我,非常感谢?
这是代码:
ProcessadorImagem::calculaHistograma(cv::Mat imagem, DadosImagem* dadosImagem) {
cv::Mat hls;
cv::cvtColor(imagem, hls, CV_RGB2HLS_FULL);
cv::Mat* comp = new cv::Mat[3];
cv::split(hls, comp);
for (int i = 0; i < imagem.rows; i++)
for (int j = 0; j < imagem.cols; j++) {
uchar tom = comp[0].at<uchar>(i, j);
for (int k = 0; k < dadosImagem->getHistograma().size(); k++) {
uchar min = dadosImagem->getHistograma()[k]->getLimiteInicial();
uchar max = dadosImagem->getHistograma()[k]->getLimiteFinal();
if (tom >= min && tom <= max) {
int contagem = dadosImagem->getHistograma()[k]->getContagemPixels();
dadosImagem->getHistograma()[k]->setContagemPixels(contagem + 1);
break;
}
}
}
}
【问题讨论】:
-
这行“uchar tom = comp[0].at
(i, j);”有什么问题?你想知道如何计算 (i,j) 处的像素值吗? -
是的,它甚至知道使用带有 emgucv 的 C# 来做到这一点的更好方法