Я использую библиотеку, найденную по этой ссылке: https://code.google.com/p/simple-iphone-image-processing/
Я реализовал Image.h и Image.mm и получил фильтр Canny Edge Detection с помощью этого кода:
- (IBAction)findEdges {
ImageWrapper *greyScale=Image::createImage(_sourceImage, _sourceImage.size.width/4, _sourceImage.size.height/4);
ImageWrapper *edges=greyScale.image->gaussianBlur().image->cannyEdgeExtract(0.4,0.6);
// show the results
UIImage *newimageView = edges.image->toUIImage();
_imageView.image = newimageView;
}
Теперь я заметил, что есть метод findLargestStructure
, Это тот метод:
void Image::findLargestStructure(std::vector<ImagePoint> *maxPoints) {
// process the image
std::vector<ImagePoint> points;
points.reserve(10000);
for(int y=0; y<m_height; y++) {
for(int x=0; x<m_width; x++) {
// if we've found a point in the image then extract everything connected to it
if((*this)[y][x]!=0) {
extractConnectedRegion(x, y, &points);
if(points.size()>maxPoints->size()) {
maxPoints->clear();
maxPoints->resize(points.size());
std::copy(points.begin(), points.end(), maxPoints->begin());
}
points.clear();
}
}
}
}
Мой вопрос, что именно делает этот метод и как я могу назвать его / использовать из кода Objective C? В конце концов, моя цель в конце всего этого состоит в том, чтобы использовать Canny Edge Detection, который есть в этой библиотеке, и каким-то образом извлечь из нее CGRect, используя среднее значение краевых точек самой большой структуры, а затем использовать это в моем приложении.
Так вернет ли этот метод вектор этих точек или нет? Я знаком с Objective-C, но я не так хорош в C ++.
Любая помощь / советы будут с благодарностью!
Код не совместим с Objective C, так как он использует типы C ++ в интерфейсе, а именно std::vector<>
,
Код звонков extractConnectedRegion
на ряд баллов и пытается вернуть самый большой результат. Есть несколько мелких щупалец: например, назначение maxPoints
было бы гораздо лучше сделать как maxPoints = points
, (Вы можете сделать еще лучше, но это становится неочевидным)
Других решений пока нет …