EmguCV C++ to convert C# EmguCV
EmguCV C++ to convert C# EmguCV
我正试图用EmguCV在通道H中进行像素计数,大多数人在C++中都有这段代码,并希望将EmguCV C++的部分转换为C#,尤其是在(I,j)处的uchar tone=comp[0]部分;这让我很头疼,非常感谢你能帮我吗?
这是代码:
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;
}
}
}
}
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);
===================
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]
相关文章:
- 将OpenCV C++重写为EmguCV C#-如何使用指针
- C++:如何将 unix 时间的字符串转换为 *tm?(使用时间错误:"cannot convert 'String' to 'tm*' ")
- 如何在 C++ 中将双精度数组中的值"force convert"到字符串输出中?
- Equivalent of OpenCv c++ api Vec2f,norm, acos in emgucv csha
- "Cannot convert Python object argument to type '<typename>'" - 使用 Cython 包装 C++ 类时出错
- 我一直收到错误"cannot convert 'float*' to 'float' in return"
- 地图'Cannot convert from _Ty2 to T*'错误
- 将 2D 数组插入 std::vector 时"cannot convert from 'const GLfloat [12]' to '_Objty'"错误消息
- 如何修复C++中的'cannot convert char to char*'错误?
- 返回"Cannot convert from 'std::ofstream {aka std::basic_ofstream<char>}' to bool"错误
- 列表插入"Cannot convert argument from Class<T>* to Class<T> &&"
- "Cannot convert parameter 1 from double to float"虽然没有更改参数
- C++ 中的错误" cannot convert node to node* "
- C# EmguCV Mat.Ptr
- "cannot convert argument 1 from 'Node<T>' to 'std::nullptr_t"编译器错误
- 撤消仪表convert依行动
- 'Convert' 5 个字符到整数
- 如何修复C++编译器错误"cannot convert 'Type' to 'const Type*'"?
- "could not convert template argument"到自己的类型
- EmguCV C++ to convert C# EmguCV