![](/img/trans.png)
[英]How to pass multiple cv::Mat from c++ dll to opencvsharp Mat c# properly?
[英]how to convert Mat.at<cv::Vec3b>() from C++ opencv to Mat for C# opencvsharp?
我想将 C++ OpenCV 代码转换为 C# OpenCVSharp。
但我不知道如何替换此代码
cv::Mat mat;
mat.at<cv::vec3b>(int,int)[c] = cv::saturate_cast<uchar>(alpha*(image.at<cv::Vec3b>(i, j)[c]) + beta);
我已经知道 uchar 被字节替换了。 但我尝试了很多东西,但我只在 Visual Studio 中看到错误。 所以我不知道如何处理它。
这是 C++ 代码
cv::Mat TextureFiltering::BrightContrast(const cv::Mat &image, double alpha, int beta)
{
CV_Assert(image.depth() == CV_8U);
cv::Mat result;
result.create(image.rows, image.cols, image.type());
for (int i = 0; i < image.rows; i++)
{
for (int j = 0; j < image.cols; j++)
{
for (int c = 0; c < image.channels(); c++)
{
result.at<cv::Vec3b>(i, j)[c] = cv::saturate_cast<uchar>(alpha*(image.at<cv::Vec3b>(i, j)[c]) + beta);
}
}
}
return result;
}
这是 C# 代码(不完整)
public Mat BrightContrast(Mat m, double alpha, int beta)
{
Mat result = m.Clone();
result.Create(m.Rows, m.Cols, m.Type());
for (int i = 0; i < m.Rows; i++)
{
for (int j = 0; j < m.Cols; j++)
{
for (int c = 0; c < m.Channels(); c++)
{
// I don't know what code to put here.
}
}
}
}
我很欣赏你的回答。 非常感谢。
opencv 转换为 opencvsharp
result.at<cv::Vec3b> (i, j)[c]
到result.At<Vec3b>(i, j)[c]
如果你想在 opencvsharp 中设置像 opencv 这样的值,例如:
result.at<cv::Vec3b>(i, j)[c] = 10;
你可以参考这个链接https://csharp.hotexamples.com/examples/-/Vec3b/-/php-vec3b-class-examples.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.