首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将EmguCV C++转换为C# EmguCV

将EmguCV C++转换为C# EmguCV
EN

Stack Overflow用户
提问于 2014-09-10 07:17:10
回答 1查看 264关注 0票数 0

我正在尝试使用EmguCV在通道H中进行像素计数,大多数都有此代码在C ++中,并希望将EmguCV c ++的一部分转换为C #,特别是部分uchar tone = comp .at (i,j);这让我很头疼,非常感谢你能帮助我吗?

这就是代码:

ProcessadorImagem::calculaHistograma(cv::Mat imagem,DadosImagem* dadosImagem) {

代码语言:javascript
复制
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;
            }
        }
    }

}

EN

回答 1

Stack Overflow用户

发布于 2020-02-28 15:06:08

代码语言:javascript
复制
public class ColorDetails
{
    public Hsv hueLowerLimit { get; set; }
    public Hsv hueUpperLimit { get; set; }

}

        hueLowerLimit = new Hsv(hueLow, satLow, valLow);
        hueUpperLimit = new Hsv(hueHigh, satHigh, valHigh);

===================

代码语言:javascript
复制
ColorDetails element = // add hue upperlimit and lower limit here
Image<Gray, byte> filteredImage = null;

//function to filter out a specified hue range 
if (element.hueLowerLimit.Hue > element.hueUpperLimit.Hue)
{
    filteredImage = hsvImage.InRange(element.hueLowerLimit, new Hsv(180, element.hueUpperLimit.Satuation, element.hueUpperLimit.Value))
    .Add(hsvImage.InRange(new Hsv(0, element.hueLowerLimit.Satuation, element.hueLowerLimit.Value), element.hueUpperLimit));
}
else
{
    filteredImage = hsvImage.InRange(element.hueLowerLimit, element.hueUpperLimit);
}

/*                        
//for debugging
Image<Bgr, Byte> masked = new Image<Bgr, byte>(image.Size);
image.Copy(masked, filteredImage);
Console.WriteLine("Color Count : " + filteredImage.CountNonzero()[0]);
CvInvoke.Imshow("out", masked);
CvInvoke.WaitKey(0);
*/

//this is the pixel count of a particular hue range
filteredImage.CountNonzero()[0]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25754978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档