Closed cocoa-xu closed 1 year ago
This PR should fix #149.
iex(1)> image_tensor = Evision.Mat.literal([[[2,2,2]], [[2,3,4]], [[4,5,6]]], :u8) %Evision.Mat{ channels: 1, dims: 3, type: {:u, 8}, raw_type: 0, shape: {3, 1, 3}, ref: #Reference<0.3295664936.570032148.167498> } iex(2)> image_2d = Evision.Mat.last_dim_as_channel(image_tensor) %Evision.Mat{ channels: 3, dims: 2, type: {:u, 8}, raw_type: 16, shape: {3, 1, 3}, ref: #Reference<0.3295664936.570032148.167499> } iex(3)> Evision.Mat.to_nx(image_2d) #Nx.Tensor< u8[3][1][3] Evision.Backend [ [ [2, 2, 2] ], [ [2, 3, 4] ], [ [4, 5, 6] ] ] > iex(4)> patch_tensor = Evision.Mat.literal([[[7,8]], [[9,10]]], :u8) %Evision.Mat{ channels: 1, dims: 3, type: {:u, 8}, raw_type: 0, shape: {2, 1, 2}, ref: #Reference<0.3295664936.570032148.167503> } iex(5)> patch_2d = Evision.Mat.last_dim_as_channel(patch_tensor) %Evision.Mat{ channels: 2, dims: 2, type: {:u, 8}, raw_type: 8, shape: {2, 1, 2}, ref: #Reference<0.3295664936.570032148.167504> } iex(6)> Evision.Mat.to_nx(patch_2d) #Nx.Tensor< u8[2][1][2] Evision.Backend [ [ [7, 8] ], [ [9, 10] ] ] > iex(7)> roi = [{0, 2}, {0, 1}, {1, 3}] [{0, 2}, {0, 1}, {1, 3}] iex(8)> Evision.Mat.to_nx(Evision.Mat.update_roi(image_2d, roi, patch_2d)) #Nx.Tensor< u8[3][1][3] Evision.Backend [ [ [2, 7, 8] ], [ [2, 9, 10] ], [ [4, 5, 6] ] ] > iex(9)> Evision.Mat.to_nx(Evision.Mat.update_roi(image_2d, roi, patch_tensor)) #Nx.Tensor< u8[3][1][3] Evision.Backend [ [ [2, 7, 8] ], [ [2, 9, 10] ], [ [4, 5, 6] ] ] > iex(10)> Evision.Mat.to_nx(Evision.Mat.update_roi(image_tensor, roi, patch_2d)) #Nx.Tensor< u8[3][1][3] Evision.Backend [ [ [2, 7, 8] ], [ [2, 9, 10] ], [ [4, 5, 6] ] ] > iex(11)> Evision.Mat.to_nx(Evision.Mat.update_roi(image_tensor, roi, patch_tensor)) #Nx.Tensor< u8[3][1][3] Evision.Backend [ [ [2, 7, 8] ], [ [2, 9, 10] ], [ [4, 5, 6] ] ] > iex(12)> roi = [{1, 3}, {0, 1}, {1, 3}] [{1, 3}, {0, 1}, {1, 3}] iex(13)> Evision.Mat.to_nx(Evision.Mat.update_roi(image_2d, roi, patch_2d)) #Nx.Tensor< u8[3][1][3] Evision.Backend [ [ [2, 2, 2] ], [ [2, 7, 8] ], [ [4, 9, 10] ] ] > iex(14)> Evision.Mat.to_nx(Evision.Mat.update_roi(image_2d, roi, patch_tensor)) #Nx.Tensor< u8[3][1][3] Evision.Backend [ [ [2, 2, 2] ], [ [2, 7, 8] ], [ [4, 9, 10] ] ] > iex(15)> Evision.Mat.to_nx(Evision.Mat.update_roi(image_tensor, roi, patch_2d)) #Nx.Tensor< u8[3][1][3] Evision.Backend [ [ [2, 2, 2] ], [ [2, 7, 8] ], [ [4, 9, 10] ] ] > iex(16)> Evision.Mat.to_nx(Evision.Mat.update_roi(image_tensor, roi, patch_tensor)) #Nx.Tensor< u8[3][1][3] Evision.Backend [ [ [2, 2, 2] ], [ [2, 7, 8] ], [ [4, 9, 10] ] ] > iex(17)> roi = [{1, 3}, {0, 1}, {0, 2}] [{1, 3}, {0, 1}, {0, 2}] iex(18)> Evision.Mat.to_nx(Evision.Mat.update_roi(image_2d, roi, patch_2d)) #Nx.Tensor< u8[3][1][3] Evision.Backend [ [ [2, 2, 2] ], [ [7, 8, 4] ], [ [9, 10, 6] ] ] > iex(19)> Evision.Mat.to_nx(Evision.Mat.update_roi(image_2d, roi, patch_tensor)) #Nx.Tensor< u8[3][1][3] Evision.Backend [ [ [2, 2, 2] ], [ [7, 8, 4] ], [ [9, 10, 6] ] ] > iex(20)> Evision.Mat.to_nx(Evision.Mat.update_roi(image_tensor, roi, patch_2d)) #Nx.Tensor< u8[3][1][3] Evision.Backend [ [ [2, 2, 2] ], [ [7, 8, 4] ], [ [9, 10, 6] ] ] > iex(21)> Evision.Mat.to_nx(Evision.Mat.update_roi(image_tensor, roi, patch_tensor)) #Nx.Tensor< u8[3][1][3] Evision.Backend [ [ [2, 2, 2] ], [ [7, 8, 4] ], [ [9, 10, 6] ] ] > iex(22)> roi = [{0, 2}, {0, 1}, {0, 2}] [{0, 2}, {0, 1}, {0, 2}] iex(23)> Evision.Mat.to_nx(Evision.Mat.update_roi(image_2d, roi, patch_2d)) #Nx.Tensor< u8[3][1][3] Evision.Backend [ [ [7, 8, 2] ], [ [9, 10, 4] ], [ [4, 5, 6] ] ] > iex(24)> Evision.Mat.to_nx(Evision.Mat.update_roi(image_2d, roi, patch_tensor)) #Nx.Tensor< u8[3][1][3] Evision.Backend [ [ [7, 8, 2] ], [ [9, 10, 4] ], [ [4, 5, 6] ] ] > iex(25)> Evision.Mat.to_nx(Evision.Mat.update_roi(image_tensor, roi, patch_2d)) #Nx.Tensor< u8[3][1][3] Evision.Backend [ [ [7, 8, 2] ], [ [9, 10, 4] ], [ [4, 5, 6] ] ] > iex(26)> Evision.Mat.to_nx(Evision.Mat.update_roi(image_tensor, roi, patch_tensor)) #Nx.Tensor< u8[3][1][3] Evision.Backend [ [ [7, 8, 2] ], [ [9, 10, 4] ], [ [4, 5, 6] ] ] >
This PR should fix #149.