任何人知道为什么我的应用程序崩溃每次代码被解析这一行:转换wxString到的std :: string的OpenCV的
deskew(filename); //filename string
我的声明是这样的:
void deskew(std::string fname);
然后,我还使用此代码将我的wxString转换为字符串:
string fname = string(path.mb_str());
我刚刚从教程中读到它,但它不工作G。 顺便说一句,我使用wxWidgets作为我的C++。
这里是去歪斜的身体:
void DImage::deskew(string filename, unsigned int angle)
{
if (filename == "")
return;
Mat img = imread(filename, CV_LOAD_IMAGE_GRAYSCALE);
vector<Point> points;
Mat_<uchar>::iterator it = img.begin<uchar>();
Mat_<uchar>::iterator end = img.end<uchar>();
for (; it != end; ++it)
if (*it)
points.push_back(it.pos());
RotatedRect box = minAreaRect(Mat(points));
Mat rot_mat = getRotationMatrix2D(box.center, angle, 1);
Mat rotated;
warpAffine(img, rotated, rot_mat, img.size(), INTER_CUBIC);
Size box_size = box.size;
if (box.angle < -45.)
swap(box_size.width, box_size.height);
Mat cropped;
getRectSubPix(rotated, box_size, box.center, cropped);
//imshow("Original", img);
//imshow("Output", rotated);
//imshow("Cropped", cropped);
imwrite("icons/DESKEW.png", cropped);
waitKey(0);
}
这是我刚刚贴吧都让大家都能看到。
除非我失去了一些东西,你在做什么应该工作(尽管我认为你的意思是'std :: string fname')。可能是其他地方的错误 - 我们可能需要更多的上下文:如何声明/生成'filename'? “歪斜”的身体是什么样的? – dantswain 2012-03-05 20:38:01
您是否在使用调试器来查看“崩溃”的位置?它是否在纠偏方法中的其中一行? – ravenspoint 2012-03-05 20:52:42
不,不是调试器错误。该应用程序正在运行,但是当我输入一个使用去歪斜功能的事件时,就是发生崩溃的地方。我使用windows。 – 2012-03-05 20:55:55