Я делаю некоторое признание Эллипс в изображении, и для того, чтобы сделать это я открываю простое изображение:OpenCV - Использование ROI после cvtColor
img = imread("M:/Desktop/PsEyeRight.jpg", CV_LOAD_IMAGE_COLOR);
выбирающий рентабельность инвестиций (это единственный способ, которым я мог видеть установить ROI в OpenCV 2.4.6, где старая библиотека была cvSetImageROI() и cvResetImageROI(), который я думаю, более простой):
Mat roi(img, Rect(Point(205, 72), Point(419,285)));
изменяя его цветовое пространство с cvtColor:
cvtColor(roi, roi, CV_BGR2GRAY);
применение Threshold:
threshold(roi, roi, 150, 255, THRESH_BINARY);
Тогда я в findContours с клонированным образом, так как findContours изменяет изображение передается в функции, а затем изменить ROI обратно BGR цветового пространства:
cvtColor(roi, roi, CV_GRAY2BGR);
И нарисуйте все найденные эллипсы в рои.
Когда я показываю roi, я вижу, что все работает на 100%, но я ожидал, что когда я покажу оригинальное изображение, это будет оригинальное изображение с ROI в пороге и чертежами внутри него, но вместо этого я просто получить исходное изображение, так как ничего не изменилось. Я считаю, что это происходит потому, что cvtColor копирует roi, поэтому он больше не указывает на img.
Каков наилучший способ (или рекомендуется) выполнить эту же обработку и получить ROI внутри исходного изображения, показывая ход алгоритма?
это работает ... Я не видел cvtColor() как «копир», огромное спасибо! – mFeinstein