gpt4 book ai didi

c++ - OpenCV,我得到分割但找不到它

转载 作者:行者123 更新时间:2023-11-28 05:13:02 25 4
gpt4 key购买 nike

我是 C++ 的新手,所以我真的不知道出了什么问题。我在这里有一个函数可以获取 orignal_image 并将其制作成油彩。 https://www.codeproject.com/Articles/471994/OilPaintEffect我按照这些步骤操作,但仍然出现段错误。

cv::Mat getFilteredImage(const cv::Mat &original_image,
int radius,
int levels)
{


for(int i=0;i<original_image.rows;i++)
{
for(int j=0;j<original_image.cols;j++)
{
for(int k=-radius;k<=radius;k++)
{
for(int l=-radius;l<=radius;l++)
{
int IB = original_image.at<cv::Vec3b>(j,i)[0];
int IG = original_image.at<cv::Vec3b>(j,i)[1];
int IR = original_image.at<cv::Vec3b>(j,i)[2];



int intervall = floor(((double)((IR+IG+IB)/3.0) * (levels/255.0)));//eine Pixel intensität errechen

if(intervall>255)
{
intervall = 255;
}
std::vector<int> intensityCount;
intensityCount[intervall]++;

int averageB[intervall];
int averageG[intervall];
int averageR[intervall];

averageB[intervall] += IB;
averageG[intervall] += IG;
averageR[intervall] += IR;


}


}

int Curmax=0;
int maxIndex;

for(int nI = 0; nI<256;nI++)
{
if(intensityCount[nI]>Curmax) //this is not allowed
{
Curmax = intensityCount[nI];
maxIndex = nI;

}



}


}

}


cv::Mat output = cv::Mat::zeros(original_image.size(),
original_image.type());




return output;
}

最佳答案

std::vector<int> intensityCount;
intensityCount[intervall]++;

这并不像您想象的那样。第一行声明并初始化一个 vector 。这意味着您的第二行将访问未初始化的内存,这是您的段错误的原因。要解决此问题,请使用给定大小 ( std::vector<int>
intensityCount(yourSizeHere)
) 初始化 vector 或使用 push backemplace back .

关于c++ - OpenCV,我得到分割但找不到它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43167553/

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