大版本更新。
This commit is contained in:
154
tools/TrainCNN/backward.py
Normal file → Executable file
154
tools/TrainCNN/backward.py
Normal file → Executable file
@@ -5,8 +5,8 @@ from tqdm import tqdm
|
||||
import generate
|
||||
import forward
|
||||
import cv2
|
||||
import sys
|
||||
import numpy as np
|
||||
import mvsdk
|
||||
print("Finish!")
|
||||
|
||||
def save_kernal(fp, val):
|
||||
@@ -54,7 +54,7 @@ def save_para(folder, paras):
|
||||
save_bias(fp, paras[7])
|
||||
|
||||
|
||||
STEPS = 100000
|
||||
STEPS = 5000
|
||||
BATCH = 30
|
||||
LEARNING_RATE_BASE = 0.01
|
||||
LEARNING_RATE_DECAY = 0.99
|
||||
@@ -62,12 +62,16 @@ MOVING_AVERAGE_DECAY = 0.99
|
||||
|
||||
|
||||
def train(dataset, show_bar=False):
|
||||
test_images, test_labels = dataset.all_test_sets()
|
||||
|
||||
x = tf.placeholder(tf.float32, [None, generate.SRC_ROWS, generate.SRC_COLS, generate.SRC_CHANNELS])
|
||||
y_= tf.placeholder(tf.float32, [None, forward.OUTPUT_NODES])
|
||||
nodes, vars = forward.forward(x, 0.001)
|
||||
keep_rate = tf.placeholder(tf.float32)
|
||||
nodes, vars = forward.forward(x, 0.01)
|
||||
y = nodes[-1]
|
||||
|
||||
ce = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=y, labels=tf.argmax(y_, 1))
|
||||
# ce = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=y, labels=tf.argmax(y_, 1))
|
||||
ce = tf.nn.weighted_cross_entropy_with_logits(logits=y, labels=tf.argmax(y_, 1), pos_weight=1)
|
||||
cem = tf.reduce_mean(ce)
|
||||
loss= cem + tf.add_n(tf.get_collection("losses"))
|
||||
|
||||
@@ -87,72 +91,118 @@ def train(dataset, show_bar=False):
|
||||
|
||||
correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))
|
||||
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
|
||||
|
||||
config = tf.ConfigProto(gpu_options=tf.GPUOptions(allow_growth=True))
|
||||
with tf.Session(config=config) as sess:
|
||||
init_op = tf.global_variables_initializer()
|
||||
sess.run(init_op)
|
||||
|
||||
bar = tqdm(range(STEPS), dynamic_ncols=True)
|
||||
bar = tqdm(range(STEPS), ascii=True, dynamic_ncols=True)
|
||||
for i in bar:
|
||||
images_samples, labels_samples = dataset.sample_train_sets(BATCH)
|
||||
|
||||
_, loss_value, step = sess.run(
|
||||
[train_op, loss, global_step],
|
||||
feed_dict={x: images_samples, y_: labels_samples}
|
||||
feed_dict={x: images_samples, y_: labels_samples, keep_rate:0.7}
|
||||
)
|
||||
|
||||
if i % 100 == 0:
|
||||
if i % 1000 == 0:
|
||||
test_samples, test_labels = dataset.sample_test_sets(1000)
|
||||
acc = sess.run(accuracy, feed_dict={x: test_samples, y_: test_labels})
|
||||
acc = sess.run(accuracy, feed_dict={x: test_images, y_: test_labels, keep_rate:1.0})
|
||||
bar.set_postfix({"loss": loss_value, "acc": acc})
|
||||
|
||||
# video = cv2.VideoCapture("/home/xinyang/Desktop/Video.mp4")
|
||||
# _ = True
|
||||
# while _:
|
||||
# _, frame = video.read()
|
||||
# cv2.imshow("Video", frame)
|
||||
# k = cv2.waitKey(10)
|
||||
# if k == ord(" "):
|
||||
# bbox = cv2.selectROI("frame", frame, False)
|
||||
# print(bbox)
|
||||
# roi = frame[bbox[1]:bbox[1]+bbox[3], bbox[0]:bbox[0]+bbox[2]]
|
||||
# roi = cv2.resize(roi, (48, 36))
|
||||
# cv2.imshow("roi", roi)
|
||||
# cv2.waitKey(0)
|
||||
# roi = roi.astype(np.float32)
|
||||
# roi /= 255.0
|
||||
# roi = roi.reshape([1, 36, 48, 3])
|
||||
# res = sess.run(y, feed_dict={x: roi})
|
||||
# res = res.reshape([forward.OUTPUT_NODES])
|
||||
# print(np.argmax(res))
|
||||
# elif k==ord("q"):
|
||||
# break
|
||||
# keep = True
|
||||
# while keep:
|
||||
# n = input()
|
||||
# im = cv2.imread(n)
|
||||
# im = cv2.resize(im, (48, 36))
|
||||
# cv2.imshow("im", im)
|
||||
# if cv2.waitKey(0) == ord("q"):
|
||||
# keep = False
|
||||
# im = im.astype(np.float32)
|
||||
# im /= 255.0
|
||||
# im = im.reshape([1, 36, 48, 3])
|
||||
# res = sess.run(y, feed_dict={x: im})
|
||||
# res = res.reshape([forward.OUTPUT_NODES])
|
||||
# print(np.argmax(res))
|
||||
|
||||
test_samples, test_labels = dataset.sample_test_sets(100)
|
||||
|
||||
|
||||
vars_val = sess.run(vars)
|
||||
save_para("/home/xinyang/Desktop/AutoAim/tools/para", vars_val)
|
||||
nodes_val = sess.run(nodes, feed_dict={x:test_samples})
|
||||
return vars_val, nodes_val, test_samples
|
||||
save_para("/home/xinyang/Desktop/RM_auto-aim/tools/para", vars_val)
|
||||
print("save done!")
|
||||
# nodes_val = sess.run(nodes, feed_dict={x:test_images})
|
||||
# return vars_val, nodes_val
|
||||
DevList = mvsdk.CameraEnumerateDevice()
|
||||
nDev = len(DevList)
|
||||
if nDev < 1:
|
||||
print("No camera was found!")
|
||||
return
|
||||
|
||||
for i, DevInfo in enumerate(DevList):
|
||||
print("{}: {} {}".format(i, DevInfo.GetFriendlyName(), DevInfo.GetPortType()))
|
||||
i = 0 if nDev == 1 else int(input("Select camera: "))
|
||||
DevInfo = DevList[i]
|
||||
print(DevInfo)
|
||||
|
||||
# 打开相机
|
||||
hCamera = 0
|
||||
try:
|
||||
hCamera = mvsdk.CameraInit(DevInfo, -1, -1)
|
||||
except mvsdk.CameraException as e:
|
||||
print("CameraInit Failed({}): {}".format(e.error_code, e.message) )
|
||||
return
|
||||
|
||||
# 获取相机特性描述
|
||||
cap = mvsdk.CameraGetCapability(hCamera)
|
||||
|
||||
# 判断是黑白相机还是彩色相机
|
||||
monoCamera = (cap.sIspCapacity.bMonoSensor != 0)
|
||||
|
||||
# 黑白相机让ISP直接输出MONO数据,而不是扩展成R=G=B的24位灰度
|
||||
if monoCamera:
|
||||
mvsdk.CameraSetIspOutFormat(hCamera, mvsdk.CAMERA_MEDIA_TYPE_MONO8)
|
||||
else:
|
||||
mvsdk.CameraSetIspOutFormat(hCamera, mvsdk.CAMERA_MEDIA_TYPE_BGR8)
|
||||
|
||||
# 相机模式切换成连续采集
|
||||
mvsdk.CameraSetTriggerMode(hCamera, 0)
|
||||
|
||||
# 手动曝光,曝光时间30ms
|
||||
mvsdk.CameraSetAeState(hCamera, 0)
|
||||
mvsdk.CameraSetExposureTime(hCamera, 30 * 1000)
|
||||
|
||||
# 让SDK内部取图线程开始工作
|
||||
mvsdk.CameraPlay(hCamera)
|
||||
|
||||
# 计算RGB buffer所需的大小,这里直接按照相机的最大分辨率来分配
|
||||
FrameBufferSize = cap.sResolutionRange.iWidthMax * cap.sResolutionRange.iHeightMax * (1 if monoCamera else 3)
|
||||
|
||||
# 分配RGB buffer,用来存放ISP输出的图像
|
||||
# 备注:从相机传输到PC端的是RAW数据,在PC端通过软件ISP转为RGB数据(如果是黑白相机就不需要转换格式,但是ISP还有其它处理,所以也需要分配这个buffer)
|
||||
pFrameBuffer = mvsdk.CameraAlignMalloc(FrameBufferSize, 16)
|
||||
|
||||
while (cv2.waitKey(1) & 0xFF) != ord('q'):
|
||||
# 从相机取一帧图片
|
||||
try:
|
||||
pRawData, FrameHead = mvsdk.CameraGetImageBuffer(hCamera, 200)
|
||||
mvsdk.CameraImageProcess(hCamera, pRawData, pFrameBuffer, FrameHead)
|
||||
mvsdk.CameraReleaseImageBuffer(hCamera, pRawData)
|
||||
# 此时图片已经存储在pFrameBuffer中,对于彩色相机pFrameBuffer=RGB数据,黑白相机pFrameBuffer=8位灰度数据
|
||||
# 把pFrameBuffer转换成opencv的图像格式以进行后续算法处理
|
||||
frame_data = (mvsdk.c_ubyte * FrameHead.uBytes).from_address(pFrameBuffer)
|
||||
frame = np.frombuffer(frame_data, dtype=np.uint8)
|
||||
frame = frame.reshape((FrameHead.iHeight, FrameHead.iWidth, 1 if FrameHead.uiMediaType == mvsdk.CAMERA_MEDIA_TYPE_MONO8 else 3) )
|
||||
|
||||
frame = cv2.resize(frame, (640,480), interpolation = cv2.INTER_LINEAR)
|
||||
cv2.imshow("Press q to end", frame)
|
||||
if (cv2.waitKey(1)&0xFF) == ord(' '):
|
||||
roi = cv2.selectROI("roi", frame)
|
||||
roi = frame[roi[1]:roi[1]+roi[3], roi[0]:roi[0]+roi[2]]
|
||||
print(roi)
|
||||
cv2.imshow("box", roi)
|
||||
image = cv2.resize(roi, (48, 36))
|
||||
image = image.astype(np.float32) / 255.0
|
||||
out = sess.run(y, feed_dict={x:[image]})
|
||||
print(out)
|
||||
print(np.argmax(out))
|
||||
|
||||
except mvsdk.CameraException as e:
|
||||
if e.error_code != mvsdk.CAMERA_STATUS_TIME_OUT:
|
||||
print("CameraGetImageBuffer failed({}): {}".format(e.error_code, e.message) )
|
||||
|
||||
# 关闭相机
|
||||
mvsdk.CameraUnInit(hCamera)
|
||||
|
||||
# 释放帧缓存
|
||||
mvsdk.CameraAlignFree(pFrameBuffer)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
print("Loading data sets...")
|
||||
dataset = generate.DataSet("/home/xinyang/Desktop/dataset/box")
|
||||
print("Finish!")
|
||||
dataset = generate.DataSet("/home/xinyang/Desktop/box_cut")
|
||||
train(dataset, show_bar=True)
|
||||
input("Press any key to end...")
|
||||
|
||||
94
tools/TrainCNN/cv_grab.py
Normal file
94
tools/TrainCNN/cv_grab.py
Normal file
@@ -0,0 +1,94 @@
|
||||
#coding=utf-8
|
||||
import cv2
|
||||
import numpy as np
|
||||
import mvsdk
|
||||
|
||||
def main_loop():
|
||||
# 枚举相机
|
||||
DevList = mvsdk.CameraEnumerateDevice()
|
||||
nDev = len(DevList)
|
||||
if nDev < 1:
|
||||
print("No camera was found!")
|
||||
return
|
||||
|
||||
for i, DevInfo in enumerate(DevList):
|
||||
print("{}: {} {}".format(i, DevInfo.GetFriendlyName(), DevInfo.GetPortType()))
|
||||
i = 0 if nDev == 1 else int(input("Select camera: "))
|
||||
DevInfo = DevList[i]
|
||||
print(DevInfo)
|
||||
|
||||
# 打开相机
|
||||
hCamera = 0
|
||||
try:
|
||||
hCamera = mvsdk.CameraInit(DevInfo, -1, -1)
|
||||
except mvsdk.CameraException as e:
|
||||
print("CameraInit Failed({}): {}".format(e.error_code, e.message) )
|
||||
return
|
||||
|
||||
# 获取相机特性描述
|
||||
cap = mvsdk.CameraGetCapability(hCamera)
|
||||
|
||||
# 判断是黑白相机还是彩色相机
|
||||
monoCamera = (cap.sIspCapacity.bMonoSensor != 0)
|
||||
|
||||
# 黑白相机让ISP直接输出MONO数据,而不是扩展成R=G=B的24位灰度
|
||||
if monoCamera:
|
||||
mvsdk.CameraSetIspOutFormat(hCamera, mvsdk.CAMERA_MEDIA_TYPE_MONO8)
|
||||
else:
|
||||
mvsdk.CameraSetIspOutFormat(hCamera, mvsdk.CAMERA_MEDIA_TYPE_BGR8)
|
||||
|
||||
# 相机模式切换成连续采集
|
||||
mvsdk.CameraSetTriggerMode(hCamera, 0)
|
||||
|
||||
# 手动曝光,曝光时间30ms
|
||||
mvsdk.CameraSetAeState(hCamera, 0)
|
||||
mvsdk.CameraSetExposureTime(hCamera, 30 * 1000)
|
||||
|
||||
# 让SDK内部取图线程开始工作
|
||||
mvsdk.CameraPlay(hCamera)
|
||||
|
||||
# 计算RGB buffer所需的大小,这里直接按照相机的最大分辨率来分配
|
||||
FrameBufferSize = cap.sResolutionRange.iWidthMax * cap.sResolutionRange.iHeightMax * (1 if monoCamera else 3)
|
||||
|
||||
# 分配RGB buffer,用来存放ISP输出的图像
|
||||
# 备注:从相机传输到PC端的是RAW数据,在PC端通过软件ISP转为RGB数据(如果是黑白相机就不需要转换格式,但是ISP还有其它处理,所以也需要分配这个buffer)
|
||||
pFrameBuffer = mvsdk.CameraAlignMalloc(FrameBufferSize, 16)
|
||||
|
||||
while (cv2.waitKey(1) & 0xFF) != ord('q'):
|
||||
# 从相机取一帧图片
|
||||
try:
|
||||
pRawData, FrameHead = mvsdk.CameraGetImageBuffer(hCamera, 200)
|
||||
mvsdk.CameraImageProcess(hCamera, pRawData, pFrameBuffer, FrameHead)
|
||||
mvsdk.CameraReleaseImageBuffer(hCamera, pRawData)
|
||||
|
||||
# 此时图片已经存储在pFrameBuffer中,对于彩色相机pFrameBuffer=RGB数据,黑白相机pFrameBuffer=8位灰度数据
|
||||
# 把pFrameBuffer转换成opencv的图像格式以进行后续算法处理
|
||||
frame_data = (mvsdk.c_ubyte * FrameHead.uBytes).from_address(pFrameBuffer)
|
||||
frame = np.frombuffer(frame_data, dtype=np.uint8)
|
||||
frame = frame.reshape((FrameHead.iHeight, FrameHead.iWidth, 1 if FrameHead.uiMediaType == mvsdk.CAMERA_MEDIA_TYPE_MONO8 else 3) )
|
||||
|
||||
frame = cv2.resize(frame, (640,480), interpolation = cv2.INTER_LINEAR)
|
||||
cv2.imshow("Press q to end", frame)
|
||||
roi = cv2.selectROI("roi", frame)
|
||||
roi = frame[roi[1]:roi[1]+roi[3], roi[0]:roi[0]+roi[2]]
|
||||
print(roi)
|
||||
cv2.imshow("box", roi)
|
||||
|
||||
|
||||
except mvsdk.CameraException as e:
|
||||
if e.error_code != mvsdk.CAMERA_STATUS_TIME_OUT:
|
||||
print("CameraGetImageBuffer failed({}): {}".format(e.error_code, e.message) )
|
||||
|
||||
# 关闭相机
|
||||
mvsdk.CameraUnInit(hCamera)
|
||||
|
||||
# 释放帧缓存
|
||||
mvsdk.CameraAlignFree(pFrameBuffer)
|
||||
|
||||
def main():
|
||||
try:
|
||||
main_loop()
|
||||
finally:
|
||||
cv2.destroyAllWindows()
|
||||
|
||||
main()
|
||||
@@ -29,24 +29,25 @@ def max_pool_2x2(x):
|
||||
CONV1_KERNAL_SIZE = 5
|
||||
|
||||
# 第一层卷积输出通道数
|
||||
CONV1_OUTPUT_CHANNELS = 8
|
||||
CONV1_OUTPUT_CHANNELS = 6
|
||||
|
||||
# 第二层卷积核大小
|
||||
CONV2_KERNAL_SIZE = 3
|
||||
|
||||
# 第二层卷积输出通道数
|
||||
CONV2_OUTPUT_CHANNELS = 16
|
||||
CONV2_OUTPUT_CHANNELS = 10
|
||||
|
||||
# 第一层全连接宽度
|
||||
FC1_OUTPUT_NODES = 16
|
||||
|
||||
# 第二层全连接宽度(输出标签类型数)
|
||||
FC2_OUTPUT_NODES = 15
|
||||
|
||||
# 输出标签类型数
|
||||
OUTPUT_NODES = FC2_OUTPUT_NODES
|
||||
|
||||
|
||||
def forward(x, regularizer=None):
|
||||
def forward(x, regularizer=None, keep_rate=tf.constant(1.0)):
|
||||
vars = []
|
||||
nodes = []
|
||||
|
||||
@@ -71,16 +72,19 @@ def forward(x, regularizer=None):
|
||||
pool_shape = pool2.get_shape().as_list()
|
||||
node = pool_shape[1] * pool_shape[2] * pool_shape[3]
|
||||
reshaped = tf.reshape(pool2, [-1, node])
|
||||
reshaped = tf.nn.dropout(reshaped, keep_rate)
|
||||
|
||||
fc1_w = tf.nn.dropout(get_weight([node, FC1_OUTPUT_NODES], regularizer), 0.1)
|
||||
fc1_w = get_weight([node, FC1_OUTPUT_NODES], regularizer)
|
||||
fc1_b = get_bias([FC1_OUTPUT_NODES])
|
||||
fc1 = tf.nn.relu(tf.matmul(reshaped, fc1_w) + fc1_b)
|
||||
fc1 = tf.nn.dropout(fc1, keep_rate)
|
||||
vars.extend([fc1_w, fc1_b])
|
||||
nodes.extend([fc1])
|
||||
|
||||
fc2_w = tf.nn.dropout(get_weight([FC1_OUTPUT_NODES, FC2_OUTPUT_NODES], regularizer), 0.1)
|
||||
fc2_w = get_weight([FC1_OUTPUT_NODES, FC2_OUTPUT_NODES], regularizer)
|
||||
fc2_b = get_bias([FC2_OUTPUT_NODES])
|
||||
fc2 = tf.nn.softmax(tf.matmul(fc1, fc2_w) + fc2_b)
|
||||
# fc2 = tf.nn.softmax(tf.matmul(fc1, fc2_w) + fc2_b)
|
||||
fc2 = tf.matmul(fc1, fc2_w) + fc2_b
|
||||
vars.extend([fc2_w, fc2_b])
|
||||
nodes.extend([fc2])
|
||||
|
||||
|
||||
@@ -2,10 +2,8 @@ import numpy as np
|
||||
import os
|
||||
import cv2
|
||||
import random
|
||||
from forward import OUTPUT_NODES
|
||||
import sys
|
||||
import os
|
||||
from tqdm import tqdm
|
||||
from forward import OUTPUT_NODES
|
||||
# 原图像行数
|
||||
SRC_ROWS = 36
|
||||
|
||||
@@ -24,7 +22,7 @@ class DataSet:
|
||||
self.test_labels = []
|
||||
self.generate_data_sets(folder)
|
||||
|
||||
def file2nparray(self, name, random=False):
|
||||
def file2nparray(self, name):
|
||||
image = cv2.imread(name)
|
||||
image = cv2.resize(image, (SRC_COLS, SRC_ROWS))
|
||||
image = image.astype(np.float32)
|
||||
@@ -42,16 +40,12 @@ class DataSet:
|
||||
files = os.listdir(dir)
|
||||
for file in tqdm(files, postfix={"loading id": i}, dynamic_ncols=True):
|
||||
if file[-3:] == "jpg":
|
||||
try:
|
||||
if random.random() > 0.2:
|
||||
self.train_samples.append(self.file2nparray("%s/%s" % (dir, file)))
|
||||
self.train_labels.append(self.id2label(i))
|
||||
else:
|
||||
self.test_samples.append(self.file2nparray("%s/%s" % (dir, file)))
|
||||
self.test_labels.append(self.id2label(i))
|
||||
except:
|
||||
print("%s/%s" % (dir, file))
|
||||
continue
|
||||
if random.random() > 0.2:
|
||||
self.train_samples.append(self.file2nparray("%s/%s" % (dir, file)))
|
||||
self.train_labels.append(self.id2label(i))
|
||||
else:
|
||||
self.test_samples.append(self.file2nparray("%s/%s" % (dir, file)))
|
||||
self.test_labels.append(self.id2label(i))
|
||||
self.train_samples = np.array(self.train_samples)
|
||||
self.train_labels = np.array(self.train_labels)
|
||||
self.test_samples = np.array(self.test_samples)
|
||||
@@ -67,15 +61,6 @@ class DataSet:
|
||||
labels.append(self.train_labels[id])
|
||||
return np.array(samples), np.array(labels)
|
||||
|
||||
def sample_test_sets(self, length):
|
||||
samples = []
|
||||
labels = []
|
||||
for i in range(length):
|
||||
id = random.randint(0, len(self.test_samples)-1)
|
||||
samples.append(self.test_samples[id])
|
||||
labels.append(self.test_labels[id])
|
||||
return np.array(samples), np.array(labels)
|
||||
|
||||
def all_train_sets(self):
|
||||
return self.train_samples[:], self.train_labels[:]
|
||||
|
||||
|
||||
111
tools/TrainCNN/grab.py
Normal file
111
tools/TrainCNN/grab.py
Normal file
@@ -0,0 +1,111 @@
|
||||
#coding=utf-8
|
||||
import mvsdk
|
||||
|
||||
def main():
|
||||
# 枚举相机
|
||||
DevList = mvsdk.CameraEnumerateDevice()
|
||||
nDev = len(DevList)
|
||||
if nDev < 1:
|
||||
print("No camera was found!")
|
||||
return
|
||||
|
||||
for i, DevInfo in enumerate(DevList):
|
||||
print("{}: {} {}".format(i, DevInfo.GetFriendlyName(), DevInfo.GetPortType()))
|
||||
i = 0 if nDev == 1 else int(input("Select camera: "))
|
||||
DevInfo = DevList[i]
|
||||
print(DevInfo)
|
||||
|
||||
# 打开相机
|
||||
hCamera = 0
|
||||
try:
|
||||
hCamera = mvsdk.CameraInit(DevInfo, -1, -1)
|
||||
except mvsdk.CameraException as e:
|
||||
print("CameraInit Failed({}): {}".format(e.error_code, e.message) )
|
||||
return
|
||||
|
||||
# 获取相机特性描述
|
||||
cap = mvsdk.CameraGetCapability(hCamera)
|
||||
PrintCapbility(cap)
|
||||
|
||||
# 判断是黑白相机还是彩色相机
|
||||
monoCamera = (cap.sIspCapacity.bMonoSensor != 0)
|
||||
|
||||
# 黑白相机让ISP直接输出MONO数据,而不是扩展成R=G=B的24位灰度
|
||||
if monoCamera:
|
||||
mvsdk.CameraSetIspOutFormat(hCamera, mvsdk.CAMERA_MEDIA_TYPE_MONO8)
|
||||
|
||||
# 相机模式切换成连续采集
|
||||
mvsdk.CameraSetTriggerMode(hCamera, 0)
|
||||
|
||||
# 手动曝光,曝光时间30ms
|
||||
mvsdk.CameraSetAeState(hCamera, 0)
|
||||
mvsdk.CameraSetExposureTime(hCamera, 30 * 1000)
|
||||
|
||||
# 让SDK内部取图线程开始工作
|
||||
mvsdk.CameraPlay(hCamera)
|
||||
|
||||
# 计算RGB buffer所需的大小,这里直接按照相机的最大分辨率来分配
|
||||
FrameBufferSize = cap.sResolutionRange.iWidthMax * cap.sResolutionRange.iHeightMax * (1 if monoCamera else 3)
|
||||
|
||||
# 分配RGB buffer,用来存放ISP输出的图像
|
||||
# 备注:从相机传输到PC端的是RAW数据,在PC端通过软件ISP转为RGB数据(如果是黑白相机就不需要转换格式,但是ISP还有其它处理,所以也需要分配这个buffer)
|
||||
pFrameBuffer = mvsdk.CameraAlignMalloc(FrameBufferSize, 16)
|
||||
|
||||
# 从相机取一帧图片
|
||||
try:
|
||||
pRawData, FrameHead = mvsdk.CameraGetImageBuffer(hCamera, 2000)
|
||||
mvsdk.CameraImageProcess(hCamera, pRawData, pFrameBuffer, FrameHead)
|
||||
mvsdk.CameraReleaseImageBuffer(hCamera, pRawData)
|
||||
|
||||
# 此时图片已经存储在pFrameBuffer中,对于彩色相机pFrameBuffer=RGB数据,黑白相机pFrameBuffer=8位灰度数据
|
||||
# 该示例中我们只是把图片保存到硬盘文件中
|
||||
status = mvsdk.CameraSaveImage(hCamera, "./grab.bmp", pFrameBuffer, FrameHead, mvsdk.FILE_BMP, 100)
|
||||
if status == mvsdk.CAMERA_STATUS_SUCCESS:
|
||||
print("Save image successfully. image_size = {}X{}".format(FrameHead.iWidth, FrameHead.iHeight) )
|
||||
else:
|
||||
print("Save image failed. err={}".format(status) )
|
||||
except mvsdk.CameraException as e:
|
||||
print("CameraGetImageBuffer failed({}): {}".format(e.error_code, e.message) )
|
||||
|
||||
# 关闭相机
|
||||
mvsdk.CameraUnInit(hCamera)
|
||||
|
||||
# 释放帧缓存
|
||||
mvsdk.CameraAlignFree(pFrameBuffer)
|
||||
|
||||
def PrintCapbility(cap):
|
||||
for i in range(cap.iTriggerDesc):
|
||||
desc = cap.pTriggerDesc[i]
|
||||
print("{}: {}".format(desc.iIndex, desc.GetDescription()) )
|
||||
for i in range(cap.iImageSizeDesc):
|
||||
desc = cap.pImageSizeDesc[i]
|
||||
print("{}: {}".format(desc.iIndex, desc.GetDescription()) )
|
||||
for i in range(cap.iClrTempDesc):
|
||||
desc = cap.pClrTempDesc[i]
|
||||
print("{}: {}".format(desc.iIndex, desc.GetDescription()) )
|
||||
for i in range(cap.iMediaTypeDesc):
|
||||
desc = cap.pMediaTypeDesc[i]
|
||||
print("{}: {}".format(desc.iIndex, desc.GetDescription()) )
|
||||
for i in range(cap.iFrameSpeedDesc):
|
||||
desc = cap.pFrameSpeedDesc[i]
|
||||
print("{}: {}".format(desc.iIndex, desc.GetDescription()) )
|
||||
for i in range(cap.iPackLenDesc):
|
||||
desc = cap.pPackLenDesc[i]
|
||||
print("{}: {}".format(desc.iIndex, desc.GetDescription()) )
|
||||
for i in range(cap.iPresetLut):
|
||||
desc = cap.pPresetLutDesc[i]
|
||||
print("{}: {}".format(desc.iIndex, desc.GetDescription()) )
|
||||
for i in range(cap.iAeAlmSwDesc):
|
||||
desc = cap.pAeAlmSwDesc[i]
|
||||
print("{}: {}".format(desc.iIndex, desc.GetDescription()) )
|
||||
for i in range(cap.iAeAlmHdDesc):
|
||||
desc = cap.pAeAlmHdDesc[i]
|
||||
print("{}: {}".format(desc.iIndex, desc.GetDescription()) )
|
||||
for i in range(cap.iBayerDecAlmSwDesc):
|
||||
desc = cap.pBayerDecAlmSwDesc[i]
|
||||
print("{}: {}".format(desc.iIndex, desc.GetDescription()) )
|
||||
for i in range(cap.iBayerDecAlmHdDesc):
|
||||
desc = cap.pBayerDecAlmHdDesc[i]
|
||||
print("{}: {}".format(desc.iIndex, desc.GetDescription()) )
|
||||
|
||||
main()
|
||||
2344
tools/TrainCNN/mvsdk.py
Normal file
2344
tools/TrainCNN/mvsdk.py
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,9 +1,7 @@
|
||||
8
|
||||
0.026843265
|
||||
0.13687223
|
||||
0.355584
|
||||
-2.171335
|
||||
2.0351274
|
||||
1.8288306
|
||||
-4.113487
|
||||
-4.7374034
|
||||
6
|
||||
2.196893
|
||||
0.07216131
|
||||
0.30069783
|
||||
-0.4587247
|
||||
0.25476167
|
||||
-0.07236218
|
||||
|
||||
1052
tools/para/conv1_w
1052
tools/para/conv1_w
File diff suppressed because it is too large
Load Diff
@@ -1,17 +1,11 @@
|
||||
16
|
||||
1.252942
|
||||
8.216776
|
||||
-0.25801975
|
||||
0.23331891
|
||||
-1.0068187
|
||||
-1.1067235
|
||||
-0.40771145
|
||||
-0.43731463
|
||||
-1.4359887
|
||||
-0.2637226
|
||||
-0.41042513
|
||||
5.653234
|
||||
11.668375
|
||||
-1.4110142
|
||||
-0.1370871
|
||||
-0.19704156
|
||||
10
|
||||
-0.20609309
|
||||
-0.22031759
|
||||
0.1367356
|
||||
0.3687642
|
||||
0.41563538
|
||||
0.56676525
|
||||
-0.18027179
|
||||
0.23183917
|
||||
-0.42312288
|
||||
-0.071102634
|
||||
|
||||
1696
tools/para/conv2_w
1696
tools/para/conv2_w
File diff suppressed because it is too large
Load Diff
@@ -1,17 +1,17 @@
|
||||
16
|
||||
-0.20538531
|
||||
7.367273
|
||||
-0.18452525
|
||||
6.532006
|
||||
25.536476
|
||||
-0.18481636
|
||||
-7.2863836
|
||||
-0.106642306
|
||||
-13.070918
|
||||
-0.20218277
|
||||
12.15478
|
||||
-0.28686985
|
||||
-0.0753381
|
||||
-0.18774705
|
||||
-0.45540679
|
||||
-0.81279093
|
||||
0.58729273
|
||||
-0.46309644
|
||||
-0.16430101
|
||||
0.43460655
|
||||
-0.12165885
|
||||
-0.23968913
|
||||
2.1033192
|
||||
-0.19900312
|
||||
-0.0075173783
|
||||
0.05968375
|
||||
-0.13455966
|
||||
-0.203078
|
||||
3.4187536
|
||||
-0.17911159
|
||||
0.2670588
|
||||
-0.58640796
|
||||
|
||||
29122
tools/para/fc1_w
29122
tools/para/fc1_w
File diff suppressed because it is too large
Load Diff
@@ -1,12 +1,16 @@
|
||||
11
|
||||
3.028916
|
||||
1.399315
|
||||
12.311913
|
||||
1.9181013
|
||||
-6.701019
|
||||
4.332221
|
||||
-1.2238123
|
||||
3.367433
|
||||
-12.5565
|
||||
-5.421737
|
||||
0.19371712
|
||||
15
|
||||
3.3147552
|
||||
0.06590654
|
||||
-0.37396204
|
||||
-0.22522521
|
||||
-0.9601034
|
||||
-0.9866448
|
||||
-0.091494516
|
||||
0.08088531
|
||||
-0.87962383
|
||||
-0.5273214
|
||||
-0.18194006
|
||||
-0.035499398
|
||||
-1.7873636
|
||||
0.48932117
|
||||
0.20472674
|
||||
|
||||
418
tools/para/fc2_w
418
tools/para/fc2_w
@@ -1,178 +1,242 @@
|
||||
16
|
||||
11
|
||||
-6.6445126e-34
|
||||
-3.249375e-34
|
||||
1.1159086e-33
|
||||
3.8638357e-34
|
||||
1.1999902e-33
|
||||
-4.773489e-34
|
||||
6.573301e-35
|
||||
-2.7309886e-34
|
||||
-3.5826868e-34
|
||||
-2.058676e-35
|
||||
2.9253375e-34
|
||||
-0.028950384
|
||||
0.6513481
|
||||
-0.090478554
|
||||
-0.20445836
|
||||
-0.033577178
|
||||
0.07797232
|
||||
0.54864347
|
||||
-0.29817155
|
||||
-0.0972982
|
||||
-0.06013593
|
||||
-0.12082546
|
||||
3.2078713e-35
|
||||
9.031606e-34
|
||||
2.9989992e-34
|
||||
-1.8143521e-34
|
||||
-4.3935644e-34
|
||||
-7.0448736e-34
|
||||
7.1789805e-35
|
||||
-1.0773237e-33
|
||||
4.1924878e-35
|
||||
2.6375152e-35
|
||||
7.6904e-34
|
||||
0.7534392
|
||||
0.041451767
|
||||
-0.16353445
|
||||
-0.060047485
|
||||
0.00937684
|
||||
-0.046534266
|
||||
0.12362613
|
||||
-0.15848428
|
||||
-0.24788214
|
||||
-0.10429883
|
||||
0.07533859
|
||||
-0.059416637
|
||||
-0.41185078
|
||||
-0.17300163
|
||||
-0.5048911
|
||||
-0.27550554
|
||||
-0.3164118
|
||||
0.41110015
|
||||
0.5305193
|
||||
0.54406047
|
||||
0.41247433
|
||||
0.37498224
|
||||
-1.8530121e-34
|
||||
9.619048e-34
|
||||
-9.084177e-35
|
||||
-6.3287863e-34
|
||||
-5.0406337e-34
|
||||
6.430404e-34
|
||||
3.175955e-34
|
||||
4.679148e-34
|
||||
-9.705965e-35
|
||||
-1.4937167e-34
|
||||
-3.7373778e-34
|
||||
-1.8647024e-34
|
||||
2.157429e-34
|
||||
9.178287e-35
|
||||
2.0542673e-34
|
||||
4.1186567e-34
|
||||
-1.4028581e-34
|
||||
-1.9601842e-35
|
||||
1.2199764e-34
|
||||
6.605314e-36
|
||||
4.5839516e-35
|
||||
4.1222883e-34
|
||||
-5.649719e-34
|
||||
6.8534397e-34
|
||||
1.5284239e-34
|
||||
4.6217582e-35
|
||||
-2.6860813e-34
|
||||
6.4033865e-34
|
||||
-1.9073337e-34
|
||||
-4.5628154e-34
|
||||
-2.5596114e-34
|
||||
3.5286568e-34
|
||||
-4.590898e-34
|
||||
-0.016765846
|
||||
0.011994723
|
||||
-0.26132298
|
||||
0.52835166
|
||||
-0.21429977
|
||||
0.047839653
|
||||
0.0091085555
|
||||
-0.27048072
|
||||
0.35106397
|
||||
-0.05962828
|
||||
-0.06534093
|
||||
-5.9855516e-34
|
||||
-3.8872762e-34
|
||||
1.4836724e-34
|
||||
-3.7528057e-34
|
||||
9.244409e-35
|
||||
3.8288393e-34
|
||||
1.7450431e-34
|
||||
-2.1571653e-34
|
||||
-8.635735e-34
|
||||
-1.1816434e-33
|
||||
2.75913e-34
|
||||
-0.11307323
|
||||
-0.05993526
|
||||
-0.13786606
|
||||
0.0066387164
|
||||
0.0024843283
|
||||
0.59352225
|
||||
-0.13324556
|
||||
-0.275834
|
||||
-0.13921
|
||||
-0.023196468
|
||||
0.5097328
|
||||
-3.878958e-34
|
||||
-3.7806562e-34
|
||||
-7.8518477e-35
|
||||
-3.8417675e-35
|
||||
5.504886e-34
|
||||
-4.2347166e-34
|
||||
3.77638e-34
|
||||
-6.449212e-34
|
||||
3.723454e-34
|
||||
-3.4782797e-34
|
||||
-7.3213066e-35
|
||||
-4.4892873e-34
|
||||
3.4874208e-34
|
||||
1.1700748e-33
|
||||
-1.1355761e-34
|
||||
1.1225075e-33
|
||||
8.598829e-34
|
||||
-4.3217242e-35
|
||||
-2.7770687e-34
|
||||
-4.541627e-34
|
||||
2.895937e-34
|
||||
5.4065008e-34
|
||||
8.211584e-34
|
||||
2.4092055e-34
|
||||
-1.1384675e-33
|
||||
6.7052264e-34
|
||||
-8.305206e-34
|
||||
-1.8370869e-34
|
||||
-5.012333e-34
|
||||
9.2541105e-34
|
||||
5.402706e-34
|
||||
-3.0262877e-34
|
||||
7.088514e-34
|
||||
-1.7485143e-34
|
||||
-2.366834e-34
|
||||
6.501108e-34
|
||||
-5.722031e-34
|
||||
1.1429626e-33
|
||||
4.9021696e-35
|
||||
1.1040688e-34
|
||||
-1.0464325e-33
|
||||
1.6525106e-34
|
||||
-3.9707304e-34
|
||||
2.1401144e-34
|
||||
-0.051736742
|
||||
-0.042417962
|
||||
0.051013805
|
||||
0.16345194
|
||||
0.5187456
|
||||
-0.14417858
|
||||
-0.0539816
|
||||
-0.15638705
|
||||
-0.30926377
|
||||
0.42976364
|
||||
-0.029886993
|
||||
15
|
||||
0.032564595
|
||||
0.2617493
|
||||
-0.32648245
|
||||
-0.09931708
|
||||
-0.24592394
|
||||
-0.046472594
|
||||
0.33926198
|
||||
-0.12294629
|
||||
0.35003394
|
||||
-0.21551898
|
||||
-0.017696692
|
||||
-0.14498983
|
||||
-0.1035376
|
||||
0.38845813
|
||||
-0.025425002
|
||||
0.009146354
|
||||
-0.10837719
|
||||
-0.26169685
|
||||
0.24757256
|
||||
0.12278806
|
||||
0.173229
|
||||
-0.13405079
|
||||
-0.12579814
|
||||
-0.055770937
|
||||
-0.18405183
|
||||
0.28358203
|
||||
0.07445254
|
||||
0.23714246
|
||||
-0.13335316
|
||||
0.010074598
|
||||
8.8978056e-36
|
||||
-3.2673058e-35
|
||||
-5.345727e-35
|
||||
-1.2187582e-35
|
||||
2.1464323e-35
|
||||
6.242724e-35
|
||||
-1.5923025e-35
|
||||
8.5710344e-35
|
||||
-1.0859142e-34
|
||||
3.2036078e-35
|
||||
9.889982e-35
|
||||
9.5151974e-35
|
||||
-2.9864197e-35
|
||||
4.3109238e-35
|
||||
-3.5075268e-35
|
||||
0.056317
|
||||
-0.041549474
|
||||
-0.07867665
|
||||
-0.18685594
|
||||
0.0036230602
|
||||
0.26440525
|
||||
-0.040618088
|
||||
-0.011269322
|
||||
-0.037696317
|
||||
0.01897098
|
||||
-0.12073718
|
||||
0.017303245
|
||||
0.33418366
|
||||
0.0023682562
|
||||
0.02849121
|
||||
5.652079e-35
|
||||
-2.3405746e-35
|
||||
7.754459e-35
|
||||
-7.9132345e-35
|
||||
-3.652418e-35
|
||||
2.7482412e-35
|
||||
-5.490258e-35
|
||||
-4.0657551e-35
|
||||
-8.77158e-35
|
||||
-1.6310674e-35
|
||||
6.9110407e-35
|
||||
2.8374646e-35
|
||||
7.249574e-35
|
||||
-8.326536e-36
|
||||
-4.2208914e-35
|
||||
3.380163e-07
|
||||
0.00018250165
|
||||
-4.091571e-13
|
||||
-5.742375e-20
|
||||
1.9097627e-29
|
||||
-1.0989738e-34
|
||||
4.988384e-06
|
||||
-6.4157313e-25
|
||||
0.0046886215
|
||||
-4.15727e-06
|
||||
8.565781e-06
|
||||
1.3159001e-08
|
||||
-6.0661813e-27
|
||||
0.003999361
|
||||
4.6603424e-12
|
||||
0.05875436
|
||||
0.1978433
|
||||
0.2357523
|
||||
0.26039347
|
||||
0.29742035
|
||||
0.23000301
|
||||
0.22130986
|
||||
0.32969925
|
||||
-0.25387922
|
||||
-0.21843708
|
||||
-0.35505614
|
||||
-0.18760061
|
||||
-0.26636004
|
||||
-0.3437664
|
||||
-0.31676972
|
||||
-2.9646424e-21
|
||||
1.6212045e-32
|
||||
-4.972171e-35
|
||||
3.321333e-35
|
||||
-3.0660306e-36
|
||||
-1.2462985e-35
|
||||
-6.15827e-35
|
||||
-7.708171e-35
|
||||
-8.6527984e-35
|
||||
-9.63909e-35
|
||||
-4.329017e-36
|
||||
-1.6798441e-35
|
||||
6.4576066e-36
|
||||
1.0103299e-34
|
||||
5.888647e-35
|
||||
-7.013437e-07
|
||||
-4.0569785e-06
|
||||
-1.6326982e-07
|
||||
-5.024649e-09
|
||||
1.0218174e-08
|
||||
-5.870887e-17
|
||||
2.4735778e-05
|
||||
-1.8678125e-28
|
||||
-5.81377e-18
|
||||
4.2194547e-08
|
||||
-8.974654e-09
|
||||
-8.819107e-18
|
||||
-4.0505355e-36
|
||||
1.4275389e-15
|
||||
2.5213077e-35
|
||||
0.0455311
|
||||
-0.16154826
|
||||
-0.12516226
|
||||
-0.15351692
|
||||
-0.15327676
|
||||
-0.101601385
|
||||
-0.09675424
|
||||
-0.009882243
|
||||
0.14380045
|
||||
0.17609678
|
||||
0.15136641
|
||||
0.18814708
|
||||
0.14553012
|
||||
0.08837449
|
||||
-0.033248488
|
||||
-5.5479194e-13
|
||||
-1.301003e-35
|
||||
6.407329e-35
|
||||
1.9132001e-35
|
||||
9.564731e-15
|
||||
-4.683806e-19
|
||||
1.8975264e-24
|
||||
2.1182613e-16
|
||||
-3.6244807e-35
|
||||
8.7545505e-28
|
||||
6.0832183e-21
|
||||
-8.545767e-31
|
||||
5.2584422e-14
|
||||
2.1925994e-22
|
||||
-3.8261837e-20
|
||||
-1.0880043e-34
|
||||
-6.6652585e-35
|
||||
-6.389439e-35
|
||||
3.2505208e-35
|
||||
-4.973718e-35
|
||||
-3.3143227e-35
|
||||
-8.6873607e-35
|
||||
-7.993331e-35
|
||||
-7.852833e-36
|
||||
-6.3270696e-35
|
||||
5.258114e-35
|
||||
2.1151958e-35
|
||||
7.3324824e-35
|
||||
7.1793427e-35
|
||||
-9.0051764e-35
|
||||
0.3847243
|
||||
-0.008498104
|
||||
0.030268772
|
||||
-0.13264672
|
||||
0.030948505
|
||||
-0.07938414
|
||||
-0.04668712
|
||||
-0.16404602
|
||||
0.07313376
|
||||
0.1522345
|
||||
0.00048681977
|
||||
0.01413009
|
||||
-0.09327267
|
||||
-0.055540953
|
||||
-0.100918815
|
||||
-0.06997617
|
||||
-0.100417346
|
||||
-0.11185439
|
||||
-0.108010836
|
||||
-0.1542093
|
||||
-0.026418801
|
||||
-0.0976361
|
||||
0.2631115
|
||||
0.110037416
|
||||
-0.038920112
|
||||
0.03310242
|
||||
-0.07849237
|
||||
0.087744445
|
||||
-0.016706102
|
||||
0.42764086
|
||||
-0.063509755
|
||||
-0.20127158
|
||||
0.3405362
|
||||
0.10242782
|
||||
-0.25828084
|
||||
-0.18461828
|
||||
0.18166192
|
||||
-0.13771532
|
||||
-0.14198124
|
||||
0.4270196
|
||||
0.16850737
|
||||
-0.13088605
|
||||
-0.18872121
|
||||
0.22758731
|
||||
-0.07991603
|
||||
-0.06114433
|
||||
0.22688313
|
||||
0.013428835
|
||||
-0.12416983
|
||||
0.32349384
|
||||
-0.081210054
|
||||
-0.33148897
|
||||
-0.1045747
|
||||
0.20436902
|
||||
0.018065251
|
||||
-0.15008682
|
||||
0.3795789
|
||||
-0.022265602
|
||||
-0.2928385
|
||||
0.012199368
|
||||
|
||||
Reference in New Issue
Block a user