将图像转换为空白图像的中心(Python,OpenCV)

时间:2018-01-16 10:27:00

标签: python opencv

这是我的问题。 我尝试复制此图像(20x20): enter image description here成为一个由代码(28x28空白画布)创建的新位置,具有精确的位置。我想要做的是将源图像的紫点设置为一个新的(画布)图像。 这是我的代码:

import cv2
import numpy as np
import os

# Read images : src image will be cloned into dst
im = cv2.imread(os.path.expanduser('~\\Desktop\\cube.png'))
obj = cv2.imread(os.path.expanduser('~\\Desktop\\testCV.png'))

# Create an all white mask
mask = 255 * np.ones(obj.shape, obj.dtype)

# The location of the center of the src in the dst
center = (int(10), int(13))

# Seamlessly clone src into dst and put the results in output
normal_clone = cv2.seamlessClone(obj, im, mask, center, cv2.NORMAL_CLONE)

# Write results
cv2.imwrite(os.path.expanduser('~\\Desktop\\fin.png'), normal_clone)

这是输出:enter image description here

你怎么看不完美在右边有一些白色并且引起我一些问题,我知道问题是“面具”,我试图修改它,但当我改变1件事时代码没有工作。 你知道其他方法做同样的想法,或者我只需要修改它。

所需的输出应该像这个例子enter image description here,以reequest为中心。

由于

2 个答案:

答案 0 :(得分:3)

这不是我的代码,我发现它是另一个问题,我尝试并且工作得很好。 这是代码:

@ChangeTrackingPolicy("NOTIFY")

这是原始答案: Match center of two images (OpenCV, Python)

答案 1 :(得分:1)

以下是使用numpy和OpenCV的结果:

  
      
  1. 找到对象中的坐标
  2.   
  3. 计算物体坐标的力矩中心
  4.   
  5. 计算力矩中心偏移量(从src到dst)
  6.   
  7. 使用偏移调整坐标
  8.   
  9. 切片操作
  10.   

结果:

(1)对象:

enter image description here

(2)交叉背景:

enter image description here

(3)交叉背景上的对象:

enter image description here