今日では、Pythonの次の画像回転で書かれたプログラムは、画像の回転は、黒点の同じパターンのいくつかは、非常に素晴らしい、それがどのように知っていないことを発見しました......
1つの #!のpython3を/ usr / binに/ ENV 2 #。UTF-8 - * - : - * -コーディング 3 インポートnumpyのAS NP 。4 #np.set_printoptions(抑制= TRUE)#閉じる科学的表記法 。5 インポートCV2 。6 。7 #回転行列R&LT 8。 ANGLE = 30 #(薄暗い=°) 9。アルファ= ANGLE / 360 * 2 * np.pi 10 R&LT np.matrix =([np.cos(アルファ)、 - np.sin(アルファ)]、 11。 [np.sin(アルファ)、np.cos(アルファ)]]) 12は、 プリント(R&LT) 13が 14 #灰色化、画像読取 15、高さをWIDTH = 640、480 16 IMG = cv2.imread('TIMG .JPG ' ) 17 #IMG = cv2.resize(IMG、(1280、850)) 18 IMG = cv2.resize(IMG、(高さ、幅)) 19 img_gray = np.float32 (cv2.cvtColor(IMG、cv2.COLOR_BGR2GRAY)) 20 プリント(img_gray.shape) 21 22 ori_img_index = np.array([(X、Y)のためのx における範囲(幅)のためのy における範囲(高さ)]) #原始像素坐标 23 new_img_index = np.array(リスト(マップ(R.dot、ori_img_index))、DTYPE = np.int32).reshape(幅*高さ、2) #変換座標 24 new_img_index - = np.min(new_img_index、軸= 0) #座標変換、回転後の分割ウィンドウを防止する 25 26で H、W = np.max(new_img_index、軸= 0) #キャンバスサイズを回転 27 位図新しいオリジナルピクセルマッピング→ 28 new_img np.zeros =((1 H +、W + 1。。 )) 29 のための index1の,, index0からでZIP(new_img_index、ori_img_index): 30 new_img [index1の、[0]、index1の、[1] = img_gray [index0から[0] [index0から[1 ] 31であり、 32(cv2.imwrite ' ./AffinedImg.jpg '、new_img、[INT(cv2.IMWRITE_JPEG_QUALITY)、95 ]) 33は、 #1 の表示画像 34 cv2.imshow(' IMG '、np.array(new_img、DTYPE = np.uint8)) 35 cv2.waitKey(0) 36 cv2.destroyAllWindows()
共通のjpg画像であるTimg.jpg。
オリジナル:timg.jpg
回転後のグレー画像:あなたはもっと素晴らしい絵のパターンの形状を見ることができますが、私はこのパターンがハハ、テーブルクロスを印刷するために使用することができます感じています。
困惑は、なぜ......数学本当に難しい知って、慌て、混乱しました。