
cv2imshow("left", img_left)
filename3=str(number)+'n3'+'jpg' #打印第number张+增值方式+保存类型
cv2imwrite(savedpath + filename3, img_left)
"""
# 数据增强实现
"""
import cv2
import numpy as np
import os
# 图像平移
def img_translation(image):
# 图像平移 下、上、右、左平移
M = npfloat32([[1, 0, 0], [0, 1, 100]])
img_down = cv2warpAffine(image, M, (imageshape[1], imageshape[0]))
M = npfloat32([[1, 0, 0], [0, 1, -100]])
img_up = cv2warpAffine(image, M, (imageshape[1], imageshape[0]))
M = npfloat32([[1, 0, 100], [0, 1, 0]])
img_right = cv2warpAffine(image, M, (imageshape[1], imageshape[0]))
M = npfloat32([[1, 0, -100], [0, 1, 0]])
img_left = cv2warpAffine(image, M, (imageshape[1], imageshape[0]))
# 保存,需要保存上述的哪一,就在cv2imwrite()中,将哪一名放入。
# filename='xxx' +'jpeg'
# cv2imwrite(savedpath + filename, img_left)
# 显示图形
cv2imshow("down", img_down)
filename0=str(number)+'n0'+'jpg'
cv2imwrite(savedpath + filename0, img_down)
cv2imshow("up", img_up)
filename1=str(number)+'n1'+'jpg'
cv2imwrite(savedpath + filename1, img_up)
cv2imshow("right", img_right)
filename2=str(number)+'n2'+'jpg'
cv2imwrite(savedpath + filename2, img_right)
cv2imshow("left", img_left)
filename3=str(number)+'n3'+'jpg'
cv2imwrite(savedpath + filename3, img_left)
# 图像缩放
def img_scale(image):
result = cv2resize(image, (224, 224))
cv2imshow("scale", result)
filename=str(number)+'n5'+'jpg'
cv2imwrite(savedpath + filename, result)
# 图像翻转
def img_flip(image):
# 0以X轴为对称轴翻转,>0以Y轴为对称轴翻转, <0X轴Y轴翻转
horizontally = cv2flip(image, 0) # 水平镜像
vertically = cv2flip(image, 1) # 垂直镜像
hv = cv2flip(image, -1) # 水平垂直镜像
# 显示图形
cv2imshow("Horizontally", horizontally)
filename1=str(number)+'n6'+'jpg'
cv2imwrite(savedpath + filename1, horizontally)
cv2imshow("Vertically", vertically)
filename2=str(number)+'n7'+'jpg'
cv2imwrite(savedpath + filename2, vertically)
cv2imshow("Horizontally & Vertically", hv)
filename3=str(number)+'n8'+'jpg'
cv2imwrite(savedpath + filename3, hv)
# 图像旋转
def img_rotation(image):
# 原图的高、宽 以及通道数
rows, cols, channel = imageshape
# 绕图像的中心旋转
# 参数:旋转中心 旋转度数 scale
M = cv2getRotationMatrix2D((cols / 2, rows / 2), 30, 1)
# 参数:原始图像 旋转参数 元素图像宽高
rotated = cv2warpAffine(image, M, (cols, rows))
# 显示图像
cv2imshow("rotated", rotated)
filename1=str(number)+'n9'+'jpg'
cv2imwrite(savedpath + filename1, rotated)
#选装60度
W = cv2getRotationMatrix2D((cols / 2, rows / 2), 60, 1)
# 参数:原始图像 旋转参数 元素图像宽高
rotated1 = cv2warpAffine(image, W, (cols, rows))
cv2imshow("rotated", rotated)
filename2=str(number)+'n12'+'jpg'
cv2imwrite(savedpath + filename2, rotated1)
#选装145度
W = cv2getRotationMatrix2D((cols / 2, rows / 2), 60, 1)
# 参数:原始图像 旋转参数 元素图像宽高
rotated2 = cv2warpAffine(image, W, (cols, rows))
cv2imshow("rotated", rotated)
filename3=str(number)+'n13'+'jpg'
cv2imwrite(savedpath + filename3, rotated2)
# 图像加噪
def img_noise(image, mean=0, var=0001):
'''
添加高斯噪声
mean : 均值
var : 方差
'''
image = nparray(image / 255, dtype=float)
noise = nprandomnormal(mean, var 05, imageshape)
out = image + noise
if outmin() < 0:
low_clip = -1
else:
low_clip = 0
out = npclip(out, low_clip, 10)
out = npuint8(out 255)
cv2imshow("noise", out)
filename3=str(number)+'n10'+'jpg'
cv2imwrite(savedpath + filename3, out)
# 图像亮度调节
def img_brightness(image):
contrast = 1 # 对比度
brightness = 100 # 亮度
pic_turn = cv2addWeighted(image, contrast, image, 0, brightness)
# cv2addWeighted(对象,对比度,对象,对比度)
'''cv2addWeighted()实现的是图像透明度的改变与图像的叠加'''
cv2imshow('bright', pic_turn) # 显示
filename3=str(number)+'n11'+'jpg'
cv2imwrite(savedpath + filename3, pic_turn)
if __name__ == '__main__':
i = 0
path = '/Data/'
print(path)
savedpath = '/result_new/'
filelist = oslistdir(path)
total_num = len(filelist)
for item in filelist:
number = i + 1
i = number
print("######")
print("打印到第",i,"张")
src = cv2imread(path + item)
img_translation(src)
img_scale(src)
img_flip(src)
img_rotation(src)
img_noise(src)
img_brightness(src)
cv2waitKey(0)
cv2destroyAllWindows()
代码较为繁琐,有空之后进行优化
输出结果
分为如下通道
1、 Alpha通道
Alpha通道是计算机图形学中的术语,指的是特别的通道。有时,它特指透明信息,但通常的意思是“非彩色”通道。Alpha通道是为保存选择区域而专门设计的通道,在生成一个图像文件时并不是必须产生Alpha通道。通常它是由人们在图像处理过程中人为生成,并从中读取选择区域信息的。因此在输出制版时,Alpha通道会因为与最终生成的图像无关而被删除。但也有时,比如在三维软件最终渲染输出的时候,会附带生成一张Alpha通道,用以在平面处理软件中作后期合成。
除了Photoshop的文件格式PSD外,GIF与TIFF格式的文件都可以保存Alpha通道。而GIF文件还可以用Alpha通道作图像的去背景处理。因此我们可以利用GIF文件的这一特性制作任意形状的图形。
2、 颜色通道
一个被建立或者打开以后是自动会创建颜色通道的。当你在photoshop中编辑图象时,实际上就是在编辑颜色通道。这些通道把图象分解成一个或多个色彩成分,图象的模式决定了颜色通道的数量,RGB模式有R、G、B三个颜色通道,CMYK图象有C、M、Y、K四个颜色通道,灰度图只有一个颜色通道,它们包含了所有将被打印或显示的颜色。当我们查看单个通道的图像时,图像窗口中显示的是没有颜色的灰度图像,通过编辑灰度级的图像,可以更好地掌握各个通道原色的亮度变化。
3、 复合通道
混合通道是由蒙板概念衍生而来,用于控制两张图像叠盖关系的一种简化应用。复合通道不包含任何信息,实际上它只是同时预览并编辑所有颜色通道的一个快捷方式。它通常被用来在单独编辑完一个或多个颜色通道后使通道面板返回到它的默认状态。对于不同模式的图象,其通道的数量是不一样的。在photoshop之中通道涉及三个模式:RGB、CMYK、Lab模式。对于RGB图象含有RGB、R、G、B通道;对于CMYK 图象含有CMYK、C、M、Y、K通道;对于Lab模式的图象则含有Lab、L、a、b通道。
4、 专色通道
专色通道是一种特殊的颜色通道,它可以使用除了青色、洋红(有人叫品红)、**、黑色以外的颜色来绘制图象。在印刷中为了让自己的印刷作品与众不同,往往要做一些特殊处理。如增加荧光油墨或夜光油墨,套版印制无色系(如烫金)等,这些特殊颜色的油墨(我们称其为“专色”)都无法用三原色油墨混合而成,这时就要用到专色通道与专色印刷了。
在图像处理软件中,都存有完备的专色油墨列表。我们只须选择需要的专色油墨,就会生成与其相应的专色通道。但在处理时,专色通道与原色通道恰好相反,用黑色代表选取(即喷绘油墨),用白色代表不选取(不喷绘油墨)。由于大多数专色无法在显示器上呈现效果,所以其制作过程也带有相当大的经验成分。
5、 矢量通道
为了减小数据量,人们将逐点描绘的数字图像再一次解析,运用复杂的计算方法将其上的点、线、面与颜色信息转化为简捷的数学公式,这种公式化的图形被称为“矢量图形”,而公式化的通道,则被称为“矢量通道”。矢量图形虽然能够成百上千倍地压缩图像信息量,但其计算方法过于复杂,转化效果也往往不尽人意。因此他只有在表现轮廓简洁、色块鲜明的几何图形时才有用武之地;而在处理真实效果(如照片)时则很少用。Photoshop 中的“路径”、3D中的几种预置贴图、Illustrator、Flash等矢量绘图软件中的蒙板,都是属于这一类型的通道。
# coding=utf-8
import numpyas np
import matplotlibpyplotas plt
from PILimport Image
import os
import sys
import caffe
#网络结构描述文件
deploy_file ="D:/Caffee/caffe-master/examples/mnist/lenetprototxt"
#模型文件
model_file ="D:/Caffee/caffe-master/examples/mnist/models/lenet_iter_10000caffemodel"
#测试
test_data ="D:/Caffee/caffe-master/examples/mnist/MNIST_data/0-9/8bmp"
#特征图路径
feature_map_path ="D:/Caffee/caffe-master/examples/mnist/draw_data/"
#编写一个函数,用于显示各层的参数,padsize用于设置间隔空隙,padval用于调整亮度
def show_data(data, name, padsize=1, padval=0):
#归一化
data -= datamin()
data /= datamax()
#根据data中数量datashape[0],计算最后输出时每行每列数n
n = int(npceil(npsqrt(datashape[0])))
# 对于conv1,datashape->(20,24,24)
# (前面填补0个,后面填补n 2 - datashape[0]),(前面填补0个,后面填补padsize个),(前面填补0个,后面填补padsize个)
padding = ((0, n 2 - datashape[0]), (0, padsize), (0, padsize))
data = nppad(data, padding, mode='constant', constant_values=padval)#常数值填充,填充0
# 对于conv1,padding后datashape->(25,25,25)
# 对于conv1,将(25,25,25)reshape->(5,5,25,25)再transpose->(5,25,5,25)
data = datareshape((n, n) + datashape[1:])transpose((0, 2, 1, 3))
# 再将(n, W, n, H)变换成(nw, nH)
data = datareshape((n datashape[1], n datashape[3]))
image_path = ospathjoin(feature_map_path,name)#特征图路径
pltset_cmap('gray')#设置为灰度图
pltimsave(image_path,data)#保存生成的
pltaxis('off')#不显示坐标
print name
#显示
img=Imageopen(image_path)
pltimshow(img)
pltshow()
#----------------------------数据预处理---------------------------------
#初始化caffe
net = caffeNet(deploy_file, #网络结构描述文件
model_file, #训练好的模型
caffeTEST)#使用测试模式
#输出网络每一层的参数
print [(k, v[0]datashape)for k, vin netparamsitems()]
transformer = caffeioTransformer({'data': netblobs['data']datashape})
# python读取的文件格式为H×W×K(高度,宽度,通道数),需转化为K×H×W(通道数,高度,宽度)
transformerset_transpose('data', (2, 0, 1))
# python中将存储为[0-1]
# 如果模型输入用的是0~255的原始格式,则需要做以下转换
# transformerset_raw_scale('data', 255)
# caffe中是BGR格式,而原始格式是RGB,所以要转化
#transformerset_channel_swap('data', (2, 1, 0))
#----------------------------数据运算---------------------------------
#读取
#参数color: True(default)是彩色图,False是灰度图
img = caffeioload_image(test_data,color=False)
# 数据输入、预处理
netblobs['data']data[] = transformerpreprocess('data', img)
# 将输入格式转化为合适格式(与deploy文件相同)
netblobs['data']reshape(1, 1, 28, 28)
# 前向迭代,即分类。保存输出
out = netforward()
# 输出结果为各个可能分类的概率分布
print"Prob:"
print out
print out['prob']
#最可能分类
predict = out['prob']argmax()
print"Result:" + str(predict)
#----------------------------输出特征图---------------------------------
#第一个卷积层输出的特征图
feature = netblobs['conv1']data
show_data(featurereshape(20,24,24),'conv1jpg')
#第一个池化层输出的特征图
feature = netblobs['pool1']data
show_data(featurereshape(20,12,12),'pool1jpg')
#第二个卷积层输出的特征图
feature = netblobs['conv2']data
show_data(featurereshape(50,8,8),'conv2jpg')
#第二个池化层输出的特征图
feature = netblobs['pool2']data
show_data(featurereshape(50,4,4),'pool2jpg')
曲线可视化:各种修改叫脚本
训练loss和accuracy可视化:
1把caffe-windows\tools\extra目录下的plot_training_logpyexample,拷贝一份改名为
plot_training_logpy。
2获得log文件
3python执行plot_training_logpy
第一个参数:0-7
训练或者测试的accuracy,loss等数据
第二个参数:存放位置
第三个参数:log文件
画图出现错误可以参考下面文章:
>
你可以使用OpenCV的resize函数将大小调整为32x32,同时将通道数设置为3。示例代码如下:
```python
import cv2
# 读入原始
img = cv2imread('your_image_file_path')
# 将调整为32x32大小,通道数为3
img_resized = cv2resize(img, (32, 32), interpolation=cv2INTER_AREA)
img_resized = cv2cvtColor(img_resized, cv2COLOR_BGR2RGB)
# 显示调整后的
cv2imshow('resized image', img_resized)
cv2waitKey(0)
cv2destroyAllWindows()
```
在上述代码中,我们首先使用cv2imread函数读入原始的,并将其存储在变量img中。然后,我们使用cv2resize函数将调整为指定的大小(32x32),并将插值方式设置为INTER_AREA,这是一种适用于缩小的插值方式。最后,我们使用cv2cvtColor函数将BGR格式的图像转换为RGB格式,以便进行显示。
生成一张纯色的
先设置的颜色,接着利用Image模块的new方法新生成一张,png格式的需要设置成rgba,类似的还有rgb,L(灰度图等),尺寸设定为640,480,这个可以根据自己的情况设定,颜色同样如此。
批量生成
上面生成了一张,那要生成十张呢,这种步骤一样,只是颜色改变的,利用循环就可以解决。首先创建一个颜色列表,把要生成的颜色放进去。接着循环获取不同的颜色,保存的时候利用字符串拼接的方法改变的名字。
本地生成的
封装成函数
前面的方法已经可以批量生成了,为了通用性强一点,我们可以封装成函数,把哪些可以改变的参数单独抽离出来。尺寸也同样,使用的时候,可以根据自己的需要定义颜色列表和尺寸。当然还有加一些提示用语和报错兼容性,这里就不讲了。
本地生成的
P_tool 是一款用于开发和制作 HMI 界面的软件,支持导入进行界面设计。以下是 P_tool 导入的要求:
1 格式:P_tool 支持导入多种格式,包括 BMP、JPG、PNG、GIF 等。建议使用 PNG 格式,因为它可以保留透明度信息,使得在界面中的显示更加自然。
2 大小:P_tool 对导入的大小有一定限制,一般不建议导入过大的。建议将大小控制在 1024 x 1024 像素以内。
3 质量:为了保证界面的显示效果,建议使用高质量的。如果质量过低,会导致在界面中显示模糊或失真。
4 命名:为了方便管理和识别,建议对导入的进行命名。命名应该简洁明了,能够准确描述的内容和用途。
5 存放位置:P_tool 导入的应该存放在指定的文件夹中,以便于管理和调用。建议将所有存放在同一个文件夹中,方便查找和使用。
需要注意的是,P_tool 导入的应该符合版权法规定,不得侵犯他人的知识产权。如果需要使用他人的,应该获得授权或者使用免费的公共。
以上就是关于python读取保存多帧图片数量少了全部的内容,包括:python读取保存多帧图片数量少了、photoshop里通道可以分为哪几种、caffe 可视化特征图,可视化 loss和 ac等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)