Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenCV,我得到了分段,但找不到它 我对C++很陌生,所以我真的不知道出了什么问题。我这里有一个函数,可以得到原始图像,并将其制作成油彩。 我遵循了这些步骤,但仍然存在分割错误 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; } cv::Mat getFilteredImage(常量cv::Mat和原始图像, 整数半径, 智力水平) { 对于(int i=0;istd::vector intensityCount; 强度计数[间隔]+;_C++_Opencv_Segmentation Fault - Fatal编程技术网

OpenCV,我得到了分段,但找不到它 我对C++很陌生,所以我真的不知道出了什么问题。我这里有一个函数,可以得到原始图像,并将其制作成油彩。 我遵循了这些步骤,但仍然存在分割错误 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; } cv::Mat getFilteredImage(常量cv::Mat和原始图像, 整数半径, 智力水平) { 对于(int i=0;istd::vector intensityCount; 强度计数[间隔]+;

OpenCV,我得到了分段,但找不到它 我对C++很陌生,所以我真的不知道出了什么问题。我这里有一个函数,可以得到原始图像,并将其制作成油彩。 我遵循了这些步骤,但仍然存在分割错误 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; } cv::Mat getFilteredImage(常量cv::Mat和原始图像, 整数半径, 智力水平) { 对于(int i=0;istd::vector intensityCount; 强度计数[间隔]+;,c++,opencv,segmentation-fault,C++,Opencv,Segmentation Fault,这与您所说的不一样。第一行声明并初始化一个空的向量。这意味着您的第二行将访问未初始化的内存,这是SEGFULT的原因。若要解决此问题,请使用给定的大小(std::vector)初始化向量 intensityCount(yourSizeHere))或使用or。您如何定义intensityCount?另外:您正在使用带符号的intenger级别来计算间隔时间(这也是一个int),我只是按照步骤操作,认为它可能会起作用()强度的级别是ist。我在openCV中听说使用double或float来计算强度

这与您所说的不一样。第一行声明并初始化一个空的向量。这意味着您的第二行将访问未初始化的内存,这是SEGFULT的原因。若要解决此问题,请使用给定的大小(
std::vector)初始化向量

intensityCount(yourSizeHere)
)或使用or。

您如何定义
intensityCount
?另外:您正在使用带符号的intenger
级别来计算
间隔时间(这也是一个int),我只是按照步骤操作,认为它可能会起作用()强度的级别是ist。我在openCV中听说使用double或float来计算强度更容易
std::vector<int> intensityCount;
intensityCount[intervall]++;