как преобразовать Mat.at‹cv::Vec3b›() из C++ opencv в Mat для 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 заменяется на byte. но я пробовал много вещей, но я вижу ошибки только в визуальной студии. поэтому я понятия не имею, как с этим справиться.

Это код С++

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;
}

Это код С# (неполный)

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.
            }
        }
    }
}

Я ценю ваши ответы. Большое спасибо.


person dhlee    schedule 28.04.2019    source источник


Ответы (1)


Opencv конвертировать в opencvsharp

result.at<cv::Vec3b> (i, j)[c] to result.At<Vec3b>(i, j)[c]

если вы хотите установить значение как opencv в opencvsharp, например:

result.at<cv::Vec3b>(i, j)[c] = 10;

вы можете перейти по этой ссылке https://csharp.hotexamples.com/examples/-/Vec3b/-/php-vec3b-class-examples.html

person H.biyuechuji    schedule 12.11.2019