A. 如何用Python+Pygame旋转图像、灰度图像
‘’‘
2013-7-4
by JavenLee
希望能带给你启发
'''
import Image
img = Image.open(‘origin.png’) # 得到一个图像的实例对象 img
rot_img = img.rotate(270) #顺时针旋转90度
rot_img.save("rot_img.jpg")
x_img=img.transpose(Image.FLIP_LEFT_RIGHT) #垂直翻转
y_img=img.transpose(Image.FLIP_TOP_BOTTOM) #水平翻转
new_imag=img.convert('L')
'''
模式
img.convert() 参数说明如下:
1 1位像素,黑和白,存成8位的像素
L 8位像素,黑白
P 8位像素,使用调色板映射到任何其他模式
RGB 3×8位像素,真彩
RGBA 4×8位像素,真彩+透明通道
CMYK 4×8位像素,颜色隔离
YCbCr 3×8位像素,彩色视频格式
I 32位整型像素
F 32位浮点型像素
'''
B. python 图像旋转怎么去除黑边
去除黑边现象的办法:
1)在做图像坐标映射反查的时候,算出当前点在原始图像的外部还是内部,若在外部,判断当前像素点的X或者Y位置,找临近四个边界的像
素值代替;
该方法太过繁琐,适合自己写程序实现,如若想调用现有的一些库函数,可以考虑2)做法:
2)将待旋转的图像进行边界填充,最不济的情况下可以扩充为原始图像的大小;
旋转边界填充图像;
计算原始图像经过旋转以后的结果图像的尺寸大小;
在边界填充旋转图像上截取目标图像;(图像都是按照图像中心旋转的);
附上一段matlab人脸根据人眼位置对齐的代码:
[plain] view plain
eye_angle = atan2( (eye_pts(2,2) - eye_pts(1,2)),(eye_pts(2,1) - eye_pts(1,1) ) ) * 180 / pi; % 人眼的倾斜角度
if eye_angle < 0
eye_angle = eye_angle + 360;
end
if floor(eye_angle) <= 5 || floor( 360 - eye_angle ) <= 5
continue;
end % 5度之内不做对齐操作
img = imread(img_path);
[m,n,~] = size(img);
img_pad = padarray(img,[m n],'both','replicate');% 扩充图像
img_pad_rotate = imrotate(img_pad,eye_angle,'bilinear'); % 旋转扩充图像
[m_pad_r,n_pad_r,~] = size(img_pad_rotate);
[plain] view plain
eye_angle = eye_angle * pi / 180;
f_cos = cos(eye_angle);f_sin = sin(eye_angle);
new_m = floor(m * abs(f_cos) + n * abs(f_sin));
new_n = floor(n * abs(f_sin) + m * abs(f_cos));% 最终对齐图像的大小
left = floor((n_pad_r - new_n) / 2);right = left + new_n;
bott = floor((m_pad_r - new_m) / 2);up = bott + new_m;
face_rorate = img_pad_rotate(bott : up,left : right,:); % 截取目标图像
figure,imshow(face_rorate)
C. python里如何将视频旋转
好象调用一次主窗口的close似乎就可以。或者是app的close, 或者是destroy或者是terminate,不记得是哪个函数了。 当然你杀掉自己也是可以的。 用kill。 或者是sys.exit也应该可以。
D. python能用鼠标旋转散点图吗
首先,你需要用到python的图形用户界面的模块 其次,你需要用到里面绘制界面和添加鼠标响应的功能模块
E. python做三维图结果怎么用鼠标拖动旋转
旋转视角,要根据三角函数计算的,每转动一个角度都需要重新计算,这些都需要实现,之后根据转动的数值传入进去,计算后,重新画图
F. J在windowes上对图片进行右键旋转后,在Python语言中对img 使用size()方法,获取的宽高仍为旋转之前的!
只有相应显示文字信息没变,但图片视觉效果和windows旋转的一样吗
G. Python如何图像识别
首先,先定位好问题是属于图像识别任务中的哪一类,最好上传一张植物叶子的图片。因为目前基于深度学习的卷积神经网络(CNN)确实在图像识别任务中取得很好的效果,深度学习属于机器学习,其研究的范式,或者说处理图像的步骤大体上是一致的。
1、第一步,准备好数据集,这里是指,需要知道输入、输出(视任务而定,针对你这个问题,建议使用有监督模型)是什么。你可以准备一个文件夹,里面存放好植物叶子的图像,而每张图像对应一个标签(有病/没病,或者是多类别标签,可能具体到哪一种病)。
具体实现中,会将数据集分为三个:训练集(计算模型参数)、验证集(调参,这个经常可以不需要实现划分,在python中可以用scikit-learn中的函数解决。测试集用于验证模型的效果,与前面两个的区别是,模型使用训练集和验证集时,是同时使用了输入数据和标签,而在测试阶段,模型是用输入+模型参数,得到的预测与真实标签进行对比,进而评估效果。
2、确定图像识别的任务是什么?
图像识别的任务可以分为四个:图像分类、目标检测、语义分割、实例分割,有时候是几个任务的结合。
图像分类是指以图像为输入,输出对该图像内容分类的描述,可以是多分类问题,比如猫狗识别。通过足够的训练数据(猫和狗的照片-标签,当然现在也有一系列的方法可以做小样本训练,这是细节了,这里并不敞开讲),让计算机/模型输出这张图片是猫或者狗,及其概率。当然,如果你的训练数据还有其它动物,也是可以的,那就是图像多分类问题。
目标检测指将图像或者视频中的目标与不感兴趣的部分区分开,判断是否存在目标,并确定目标的具体位置。比如,想要确定这只狗所佩戴的眼睛的位置,输入一张图片,输出眼睛的位置(可视化后可以讲目标区域框出来)。
看到这里,应该想想植物叶子诊断疾病的问题,只需要输入一整张植物叶子的图片,输出是哪种疾病,还是需要先提取叶子上某些感兴趣区域(可能是病变区域),在用病变区域的特征,对应到具体的疾病?
语义分割是当今计算机视觉领域的关键问题之一,宏观上看,语义分割是一项高层次的任务。其目的是以一些原始图像作为输入,输出具有突出显示的感兴趣的掩膜,其实质上是实现了像素级分类。对于输入图片,输出其舌头区域(注意可以是不规则的,甚至不连续的)。
而实例分割,可以说是在语义分割的基础上,在像素层面给出属于每个实例的像素。
看到这里,可以具体思考下自己的问题是对应其中的哪一类问题,或者是需要几种任务的结合。
3、实际操作
可以先通过一个简单的例子入手,先了解构建这一个框架需要准备什么。手写数字识别可以说是深度学习的入门数据集,其任务也经常作为该领域入门的案例,也可以自己在网上寻找。
H. python 如何控制图片移动
matplotlib是绘制二维图形的Python模块,它用Python语言实现了MATLAB画图函数的易用性,同时又有非常强大的可定制性
I. 怎么样在python中让最后画出来的图翻转90度
importImage
importos
importglob
dir="f:mobile"
#取出指定文件
file=glob.glob(os.path.join(dir,'xxx.JPG'))
#打开图片
img=Image.open(file)
#显示图片
img.show()
printimg.format,img.size,img.mode
print"rotatingimage....."
im=img.rotate(90)
im.save(image)
我不知道你怎么画的,但旋转请参考以上代码
J. python 图片移动
#-*-coding:gbk-*-
importImage
importImageDraw
importImageChops
im=Image.new('RGB',(800,600),'white')
im2=Image.open('test.png')
#测试图放画布左边,画布右边底色涂黄
left=(im.size[0]/2-im2.size[0])/2
upper=(im.size[1]-im2.size[1])/2
im.paste(im2,(left,upper))
im.paste('yellow',(im.size[0]/2,0)+im.size)
im.show()
#因要旋转得计算测试图对角线,然后切出
d=int((im2.size[0]**2+im2.size[1]**2)**0.5)
left=(im.size[0]/2-d)/2
upper=(im.size[1]-d)/2
bbox=(left,upper,left+d,upper+d)
cp=im.crop(bbox)
#图底不是黑先做mask再作旋转,
#mask做法不一,按测试图可选取g或b通道
r,g,b=cp.split()
mask=g.point(lambdai:i<250and255)
angle=30
mask=mask.rotate(angle)
cp=cp.rotate(angle)
#利用mask贴在画布右边黄底区内
im.paste(cp,(left+im.size[0]/2,upper),mask)
im.show()