-1
我尝试使用opencv C++执行任务并且任务是我正在尝试使用opencv C++创建空白图像,其背景为白色。这里是我的代码:OpenCV:试图创建一个空白图像,但核心已转储
#include<opencv2/opencv.hpp>
#include<opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat img = imread("/home/jordan/opencv/Test/taskb/img.bmp");
Mat img2;
int i,j;
for(i=0;i<img.cols;i++)
{
for(j=0;j<img.rows;j++)
{
int Red=img.at<cv::Vec3b>(j,i)[2];
int Green= img.at<cv::Vec3b>(j,i)[1];
int Blue = img.at<cv::Vec3b>(j,i)[0];
cout<<"cols="<<i<<" rows="<<j<<" Red="<<Red<<" Green="<<Green<<" Blue="<<Blue<<" \t\n";
}
}
img2=img;
for(i=0;i<img2.rows;i++)
{
for(j=0;j<img2.cols;j++)
{
if (img2.channels() == 3)
{
img.at<cv::Vec3b>(j,i)[2]=255;
img.at<cv::Vec3b>(j,i)[1]=255;
img.at<cv::Vec3b>(j,i)[0]=255;
}
}
}
cout<<"cols="<<img.cols<<" row="<<img.rows<<"\n";
namedWindow("Images",CV_WINDOW_AUTOSIZE);
namedWindow("Image2",CV_WINDOW_AUTOSIZE);
imshow("Images", img);
imshow("Image2",img2);
while(char(waitKey(1)) != 'q'){}
return 0;
}
我试图执行上面提到的代码,但它显示核心转储问题,提以下
*** Error in `./image': malloc(): memory corruption: 0x081da6e0 ***
Aborted (core dumped)
内存损坏意味着你覆盖了不属于你的内存(在触发崩溃的线路之前或之前)。您可能想要检查您的索引和循环限制是否正确(您发布的两个区块每个尝试不同的顺序)。 – Dave 2015-02-06 20:42:36
valgrind和/或电子围栏 – pm100 2015-02-06 20:51:39