標籤:

python與numpy使用的一些小tips(4)

1,numpy中數據類型的存儲格式與維度調換

a = np.random.randint(0,255,(3,1,2))nprint(a)nprint(a.shape)nprint(***********************************)nprint(np.expand_dims(a, 3))nprint(np.expand_dims(a, 3).shape)nprint(***********************************)nprint(np.transpose(a, [1, 2, 0]))nprint(np.transpose(a, [1, 2, 0]).shape)n

輸出:

[[[242 179]]nn [[ 29 144]]nn [[ 67 42]]]n(3, 1, 2)n當shape有三個維度時,其分別表示:batch_size,行,列n***********************************n[[[[242]n [179]]]nnn [[[ 29]n [144]]]nnn [[[ 67]n [ 42]]]]n(3, 1, 2, 1)n當shape有四個維度時,其分別表示:batch_size,深度,行,列n***********************************n[[[242 29 67]n [179 144 42]]]n(1, 2, 3)n其表示:batch_size為1,2行,3列。它會把原來batch上的數據變成深度n

2,得到圖片的邊緣

import cv2nimg = cv2.imread("1.png", 0)nimg = cv2.GaussianBlur(img, (3, 3), 0)ncanny = cv2.Canny(img, 50, 150)ncanny = 255 - cannyncv2.imshow(Canny, canny)ncv2.waitKey(0)ncv2.destroyAllWindows()n


3,圖像旋轉

import cv2nimport numpy as npnnimg = cv2.imread(1.png, 1)nrows, cols, channel = img.shapennM = cv2.getRotationMatrix2D((cols / 2, rows / 3), 90, 0.4)ndst = cv2.warpAffine(img, M, (cols, rows))nncv2.imshow(img, dst)ncv2.waitKey(0)ncv2.destroyAllWindows()n

  1. cv2.getRotationMatrix2D:獲得變換矩陣。第一參數指定旋轉圓點;第二個參數指定旋轉角度;第二個參數指定縮放比例
  2. cv2.warpAffine:將仿射變換應用於圖像

另一種方法:

img = Image.fromarray(img)nimg = img.convert(RGBA)nimg = img.rotate(40,expand=1)np = Image.new(RGBA, img.size,(255,)*4)nout = Image.composite(img, p, img)nimg = np.array(out)ncv2.imshow(img,img)ncv2.waitKey()n

歡迎關注公眾號:huangxiaobai880

https://www.zhihu.com/video/926478859589779456
推薦閱讀:

一個網站用兩種或以上的後端編程語言會出現什麼情況?為什麼?
學習筆記一:改善 Python 程序的 91 個建議
基於 Python 的中文分詞方案那種比較好?

TAG:Python | numpy |