【问题标题】:OpenCV help me with Sepia kernelOpenCV 帮助我处理 Sepia 内核
【发布时间】:2013-04-07 23:42:54
【问题描述】:

我正在尝试创建棕褐色效果。这是我正在尝试的代码:

    Mat image_copy;
    cvtColor(image, image_copy, CV_BGRA2BGR);

    Mat kern = (Mat_<char>(4,4) <<  0.272, 0.534, 0.131, 0,
                0.349, 0.686, 0.168, 0,
                0.393, 0.769, 0.189, 0,
                0, 0, 0, 1);
    cv::transform(image_copy, image, kern);

但它不起作用。我得到一个黑色的图像。没有错误,没有例外,只是黑色图像。有什么想法吗?

我尝试过应用不同的内核并且它们确实有效。例如:

    Mat kern = (Mat_<char>(4,4) <<  10, 0, 0, 0,
                0, 10, 0, 0,
                0, 0, 10, 0,
                0, 0, 0, 10);
    cv::transform(image_copy, image, kern);
    image += cv::Scalar(10, 10, 10, 0);

请帮忙。

【问题讨论】:

    标签: c++ opencv image-processing computer-vision


    【解决方案1】:

    您似乎正在创建一个包含 char 值的内核,但试图存储 float 值。

    确保使用与您要存储的值相同的数据类型声明内核

    #include <cv.h>
    #include <highgui.h>
    
    #include <iostream>
    
    int main()
    {
        cv::Mat image = cv::imread("test.jpg");
        if (!image.data)
        {
            std::cout << "!!! Failed imread" << std::endl;
            return -1;
        }
    
        cv::Mat image_copy = image.clone();
    
        cv::Mat kern = (cv::Mat_<float>(4,4) <<  0.272, 0.534, 0.131, 0,
                                                 0.349, 0.686, 0.168, 0,
                                                 0.393, 0.769, 0.189, 0,
                                                 0, 0, 0, 1);
    
        cv::transform(image_copy, image, kern);
    
        cv::imshow("sepia", image);
        cv::waitKey(0);
    
        return 0;
    }
    

    【讨论】:

    • @karlphillip 如果我们尝试制作自己的滤镜,那么我们需要在 Photoshop 中使用强大吗?或者我们可以简单地通过命中和试验方法改变值?第二件事是我们可以在原生 c++ 中使用相同的东西吗?
    • @Ahmad 你不需要 Photoshop。玩弄这些数字,直到它们有意义。 :)
    • @karlphillip 好吧,我经常从你的回答中获得帮助,并与我的朋友和工作中的朋友讨论你,stackoverflow 上的某个名字“karlphillip”在 opencv 中非常天才:) 谢谢
    • @Ahmad 你太客气了,先生。 ;)
    • 我尝试在 C++ 中为我的移动应用程序使用这种方法,但结果要么是全白图像(不是问题中的黑色),要么是使用 filter2d 而不是变换时非常亮的图像。也许你可以检查我的问题? @karlphillip stackoverflow.com/questions/68312285/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    相关资源
    最近更新 更多