Другой результат OpenCv между Python и Android - PullRequest
3 голосов
/ 23 января 2020

Я пытаюсь использовать модель Pytorch на Android, и для этого я использую OpenCv для предварительной обработки.

Моя предварительная обработка состоит из 3 этапов: - серое масштабирование - изменение размера - нормализовать изображения [-1,1] (не с OpenCv)

Однако, когда я делаю изменение размера на Android, я получаю другие значения по сравнению с Python. Я проверил, что входные данные точно такие же. Я попробовал официальную версию и Javacv один. Они дают точно такой же вывод (отличается от python). Изображения имеют одинаковое измерение на обоих языках.

Первые значения в python 122 121 125 125 124 129 125 126 130 132 130 131 131 130 127 127 130 129

Первые значения в java 120 124 128 127 133 131 131 128 132 131 130 138 131

Python фрагмент:

#img is a pillow image
cvImage = np.array(img.convert('RGB'))
img = cv2.cvtColor(np.array(cvImage), cv2.COLOR_RGB2GRAY)
img_opencv = cv2.resize(img, self.size,interpolation=cv2.INTER_LANCZOS4)
img = self.toTensor(img_opencv)
img.sub_(0.5).div_(0.5)

Android фрагмент:

Utils.bitmapToMat(bitmap, tmp_mat);
Imgproc.cvtColor(tmp_mat, tmp_mat_gray, Imgproc.COLOR_BGR2GRAY);
Size resized = new Size(32, (bitmap.getWidth() / bitmap.getHeight() * 32));
Imgproc.resize(tmp_mat_gray, tmp_mat_resized, resized, 0,0,Imgproc.INTER_LANCZOS4);
Utils.matToBitmap(tmp_mat_resized, resized_bitmap);

Любой идея?

...