Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么可以';当图像声明为变量名时,我是否使用OpenCV将其复制并粘贴到某个位置?_Python_Python 3.x_Image_Opencv - Fatal编程技术网

Python 为什么可以';当图像声明为变量名时,我是否使用OpenCV将其复制并粘贴到某个位置?

Python 为什么可以';当图像声明为变量名时,我是否使用OpenCV将其复制并粘贴到某个位置?,python,python-3.x,image,opencv,Python,Python 3.x,Image,Opencv,我正在尝试裁剪两幅图像的一部分,并使用OpenCV交换这些图像在主图像中的位置 下面是我用来执行上述要求的代码 image1 = img[198:238, 456:654] image2 = img[120:282, 487:534] resized_image = cv2.resize(image1, (90, 221)) resized_image1 = cv2.resize(image2, (211, 90)) img[120:282, 487:

我正在尝试裁剪两幅图像的一部分,并使用OpenCV交换这些图像在主图像中的位置

下面是我用来执行上述要求的代码

    image1 = img[198:238, 456:654]
    image2 = img[120:282, 487:534]
    resized_image = cv2.resize(image1, (90, 221)) 
    resized_image1 = cv2.resize(image2, (211, 90)) 
    img[120:282, 487:534] = resized_image
    img[198:238, 456:654] = resized_image1
    cv2.imwrite('01.png',img)
上面的代码成功地交换了两个图像位置,但当我动态传递值时,我声明要切片的图像位置为变量,当我使用此变量时,说“positiion”,图像将不会被交换,如下面的示例所示

    position[0] = img[198:238, 456:654]
    position[1] = img[120:282, 487:534]
    image1 = position[0]
    image2 = position[1]
    resized_image = cv2.resize(image1, (90, 221)) 
    resized_image1 = cv2.resize(image2, (211, 90)) 
    position[1] = resized_image
    position[0] = resized_image1
    cv2.imwrite('01.png',img)

在这里,图像在未发生交换之前保持不变
image1=position[0]
将在给定位置裁剪图像,但当我尝试使用
position[1]=resized_image
粘贴图像时,实际不会发生任何预期的图像交换。那么,为什么没有发生交换呢?我如何修复它呢?

使用img[198:238456:654]返回一个新图像,而不是原始图像的引用。所以位置[0]实际上保存了一个新的图像和交换的感兴趣区域

您可以通过创建包含每个RoI的x/y值的元组列表来解决这个问题,并使用这些元组来调整RoI的大小和交换RoI