首页 > 其他 > 详细

图像旋转后出现黑点

时间:2019-11-12 10:02:51      阅读:133      评论:0      收藏:0      [点我收藏+]

今天用Python写了下图像旋转的程序,发现旋转后的图像有一些花纹一样的黑点,非常奇妙,不知道是怎么回事……

 1 # !/usr/bin/env python3
 2 # -*-coding:utf-8-*-
 3 import numpy as np
 4 # np.set_printoptions(suppress=True)    # 关闭科学计数法
 5 import cv2
 6 
 7 # 旋转矩阵R
 8 ANGLE = 30  # (dim=°)
 9 alpha = ANGLE/360*2*np.pi
10 R = np.matrix([[np.cos(alpha), -np.sin(alpha)],
11     [np.sin(alpha), np.cos(alpha)]])
12 print(R)
13 
14 # 图片读取、灰度化
15 HEIGHT, WIDTH = 640, 480
16 img = cv2.imread(‘timg.jpg)
17 # img = cv2.resize(img, (1280, 850))
18 img = cv2.resize(img, (HEIGHT, WIDTH))
19 img_gray = np.float32(cv2.cvtColor(img, cv2.COLOR_BGR2GRAY))
20 print(img_gray.shape)
21 
22 ori_img_index = np.array([(x, y) for x in range(WIDTH) for y in range(HEIGHT)])    # 原始像素坐标
23 new_img_index = np.array(list(map(R.dot, ori_img_index)), dtype=np.int32).reshape(WIDTH*HEIGHT, 2)     # 坐标变换
24 new_img_index -= np.min(new_img_index, axis=0)      # 坐标平移,防止旋转后被窗口切分
25 
26 h, w = np.max(new_img_index, axis=0)    # 旋转后画布大小
27 # 像素映射 原始→新图
28 new_img = np.zeros((h+1, w+1))
29 for index1, index0 in 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 # 显示图片
34 cv2.imshow(img, np.array(new_img, dtype=np.uint8))
35 cv2.waitKey(0)
36 cv2.destroyAllWindows()

其中timg.jpg就是一张普通的jpg图片。

原图:timg.jpg

技术分享图片

旋转后的灰度图片:可以看到图片上多了一片奇妙形状的花纹,感觉这花纹可以拿来印桌布了,哈哈。

技术分享图片

莫名其妙,一头雾水,稀里糊涂,不明所以……数学真难。

图像旋转后出现黑点

原文:https://www.cnblogs.com/adjwang/p/11839435.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!