OpenCVにおけるReshape-1または0の意味


  • Mat::reshape( )

  • 行列の行列数やチャネル数を論理的に変えるだけで,データの複製も増減もないので,行列が連続することを要求するO(1)の動作である.
    C++:Mat Mat::reshape(int cn,int rows=0 const)cn:ターゲットチャネル数、0の場合は元のチャネル数と一致します.rows:ターゲット行数は、上が0の場合は変わらない.変更されたマトリクスはrows*cols*channelsが元の配列と等しいことを満たすため、元のマトリクスが単一チャネル3*3の場合、Reshape(0,2)を呼び出すとエラーが報告されます.3*3*1は2*1で除去できないためです.適用:フィーチャーを抽出する際に、フィーチャーマトリクスを行ベクトルにする必要がある場合があります.
    作者:李彬リンク:https://www.zhihu.com/question/52684594/answer/157491724出典:著作権は作者の所有であることを知っている.商業転載は著者に連絡して許可を得てください.非商業転載は出典を明記してください.
    newshape : int or tuple of ints The new shape should be compatible with the original shape. If an integer, then the result will be a 1-D array of that length. One shape dimension can be -1. In this case, the value is inferred from the length of the array and remaining dimensions. 配列の新しいshape属性は元のものと組み合わせるべきで、-1に等しいと、Numpyは残りの次元から配列の別のshape属性値を計算します.いくつかの例を挙げると分かるかもしれませんが、shape属性は(4,4)z=npの配列zがあります.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]])z.shape(4,4)z.reshape(−1)z.reshape(−1)array([1,2,3,4,5,6,7,8,9,10,11,11,12,13,14,15,16])z.reshape(−1)z.reshape(−1)zのshape属性がどれだけなのかは以前は知らなかったが,zのshape属性がどれだけなのかは知らなかったが,zを一列だけにしたいのだが,行数がどれだけあるのか分からず,24242424,24, z.reshape(-1,1),Numpyは12行を自動的に計算し,新しい配列shape属性は(16,1),元の(4,4)と組み合わせた.z.reshape(-1,1) array([[ 1], [ 2], [ 3], [ 4], [ 5], [ 6], [ 7], [ 8], [ 9], [10], [11], [12], [13], [14], [15], [16]])
    z.reshape(−1,2)newshapeは−1に等しく、列数は2に等しく、行数は未知であり、reshape後のshapeは(8,2)z.reshape(−1,2)array([1,2],[3,4],[5,6],[7,8],[9,10],[11,12],[13,14],[15,16])に等しい.
    同様に、行数のみが与えられ、newshapeは-1に等しく、Numpyは新しい配列の列数を自動的に計算することもできる.