Я пытаюсь получить доступ ко всем пикселям между двумя нелинейными точками. Но я не мог этого сделать. Проще говоря, с помощью функции cvLine я рисую линию между двумя точками, как показано на изображении ниже (я хочу получить доступ к пикселям вдоль зеленой линии между двумя красными точками).
Я пробовал следующее:
Rect myROI(midPx, midPy, (edgPx-midPx), (midPy-edgPy)+1);
Mat croppedImage = mask(myROI);
В моем случае это не работает.
Может ли кто-нибудь помочь мне решить эту проблему?
Извините, на самом деле я попробовал то же самое, что и в примере, это была ошибка при комментировании. Я попробовал оба метода из примера;
LineIterator it(mask, Point(midPx, midPy), Point(edgPx, edgPy), 8);
LineIterator it2 = it;
vector<Vec3b> buf(it.count);
//cout << buf<< endl;
for(int i = 0; i < it.count; i++, ++it)
{
buf[i] = *(const Vec3b)*it;
}
// alternative way of iterating through the line
//for(int i = 0; i < it2.count; i++, ++it2)
//{
// cout <<it2.pos()<<","<<val<< endl;
//buf.at<Vec3b>(Point(i,0)) = val;
//}
imshow("buf Image", buf);
но вышел с ошибкой в buf[i]
erreur: no match for ‘operator*’ in ‘*cv::Vec<unsigned char, 3>(((const unsigned char*)it.cv::LineIterator::operator*()))
It doesn't work in my case.
- что не работает, какие ошибки? - person Aleksander Lidtke   schedule 08.04.2016