gpt4 book ai didi

c++ - 改变图像的亮度和对比度

转载 作者:行者123 更新时间:2023-11-28 07:36:44 26 4
gpt4 key购买 nike

我正在编写以下代码

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>

using namespace std;
using namespace cv;

Mat change(Mat m);

int main()

{
Mat image = imread("C:/Users/Public/Pictures/Sample Pictures/Penguins.jpg");

Mat copy = Mat::zeros(image.size(),image.type());

Mat changedImage = change(copy);

namedWindow("Image");
imshow("Image",changedImage);

waitKey(0);
}

Mat change(Mat m)
{
int cols = m.cols;
int rows = m.rows;

double alpha = 2.2;
int beta = 50;


for(int i=0;i<rows;i++)
{
for(int c=0;c<cols;c++)
{
m.at<Vec3b>(rows,c)[0] = saturate_cast<uchar>(alpha* (m.at<Vec3b>(rows,cols)[0]) + beta);
m.at<Vec3b>(rows,c)[1] = saturate_cast<uchar>(alpha* (m.at<Vec3b>(rows,cols)[1]) + beta);
m.at<Vec3b>(rows,c)[2] = saturate_cast<uchar>(alpha* (m.at<Vec3b>(rows,cols)[2]) + beta);
}
}

return m;

}

这个编译很好,但是当我运行这个时,我得到以下错误

    OpenCV Error: Assertion failed (dims <= 2 && data && (unsigned)i0 < (unsigned)si
ze.p[0] && (unsigned)(i1*DataType<_Tp>::channels) < (unsigned)(size.p[1]*channel
s()) && ((((sizeof(size_t)<<28)|0x8442211) >> ((DataType<_Tp>::depth) & ((1 << 3
) - 1))*4) & 15) == elemSize1()) in unknown function, file c:\opencv\build\inclu
de\opencv2\core\mat.hpp, line 534

为什么我会收到这个?我想我做对了所有事情。

最佳答案

试试这段代码。

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>

using namespace std;
using namespace cv;

Mat change(Mat m);

int main()
{
Mat image = imread("C:/Users/Public/Pictures/Sample Pictures/Penguins.jpg");

Mat changedImage = change(image); //Modified

namedWindow("Image");
imshow("Image",changedImage);

waitKey(0);
}

Mat change(Mat m)
{
int cols = m.cols;
int rows = m.rows;

double alpha = 2.2;
int beta = 50;

for(int i=0;i<rows;i++)
{
for(int c=0;c<cols;c++)
{
m.at<Vec3b>(i,c)[0] = saturate_cast<uchar>(alpha* (m.at<Vec3b>(i,c))[0]) + beta); //Modified
m.at<Vec3b>(i,c)[1] = saturate_cast<uchar>(alpha* (m.at<Vec3b>(i,c))[1]) + beta); //Modified
m.at<Vec3b>(i,c)[2] = saturate_cast<uchar>(alpha* (m.at<Vec3b>(i,c))[2]) + beta); //Modified
}
}

return m;

}

关于c++ - 改变图像的亮度和对比度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16646400/

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