gpt4 book ai didi

c++ - OpenCV 帮助我使用 Sepia 内核

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:25:21 25 4
gpt4 key购买 nike

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

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

请帮忙。

最佳答案

您似乎正在创建一个 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;
}

关于c++ - OpenCV 帮助我使用 Sepia 内核,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15869198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com