-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