Я пробовал накладывать два изображения в openCV как в openCV, так и в PIL, но безрезультатно. Я использую массив 1000x1000x3
из np.zeros
для фона (он же черный фон) и этого случайного изображение моего монитора, но я действительно не могу заставить его работать по какой-то неизвестной мне причине.
Попытка только с OpenCV: (результат(если вы обратите внимание, вы можете увидеть пару странных строк и точки посередине))
base_temp = np.zeros((1000,1000,3))
foreground_temp = cv2.imread('exampleImageThatILinkedAbove.png')
base_temp[offset_y:offset_y+foreground_temp.shape[0], offset_x:offset_x+foreground_temp.shape[1]] = foreground_temp
Попытка с PIL: (результат буквально такой же, как и версия OpenCV)
base_temp = cv2.convertScaleAbs(self.base) #Convert to uint8 for cvtColor
base_temp = cv2.cvtColor(base_temp, cv2.COLOR_BGR2RGB) #PIL uses RGB and OpenCV uses BGR
base_temp = Image.fromarray(base_temp) #Convert to PIL Image
foreground_temp = cv2.cvtColor(cv2.convertScaleAbs(self.last_img), cv2.COLOR_BGR2RGB)
foreground_temp = Image.fromarray(foreground_temp)
base_temp.paste(foreground_temp, offset)
Я использую python3.5 и OpenCV3.4 в Windows 10, если это поможет.
Я хотел бы избегать любых решений, которые требуют сохранения изображений cv2, а затем перезагрузки их в другом модуле для их преобразования, но если это неизбежно, это тоже нормально. Любая помощь будет оценена по достоинству!
foreground_temp
прямо в серединеbase_temp
-- или, по крайней мере, вставлено в серединуbase_temp
в соответствии с предоставленным смещением - person SSBakh   schedule 14.10.2018