我必须做一个推箱子解算器(http://en.wikipedia.org/wiki/Sokoban).你做过一次吗?我正在寻找提示,而不是代码.就像"你可以使用IDA*alg"或"我使用启发式并且它非常好"或"我使用该技术不会避免死锁".
基本上我想在编写任何代码之前在纸上写下策略.
最后我设法从一个文件训练一个网络:)现在我想打印节点和权重,特别是权重,因为我想用pybrain训练网络,然后在其他地方实现NN将使用它.
我需要一种方法来打印节点之间的层,节点和权重,以便我可以轻松地复制它.到目前为止,我看到我可以使用n ['in']来访问图层,然后例如我可以这样做:
dir(n ['in'])[' class ',' delattr ',' dict ',' doc ',' format ',' getattribute ',' hash ',' init ',' module ',' new ', ' reduce ',' reduce_ex ',' repr ',' setattr ',' sizeof ',' str ',' subclasshook ',' weakref ','_ backwardImplementation','_ forwardImplementation','_ generateName','_ getName','_ growBuffers ','_ name','_ nameIds','_resetBuffers','_ setName','activate','activateOnDataset','argdict','backActivate','backward','bufferlist','dim','forward', 'getName','indim','inputbuffer','inputerror','name','offset','outdim','outputbuffer','outputerror','paramdim','reset','sequential','setArgs ','setName','shift','whichNeuron']
但我不知道如何在这里访问权重.还有params属性,例如我的网络是2 4 1有偏见,它说:
n.params array([ - 0.8167133,1.00077451,-0.7591257,-1.1150532,-1.58789386,0.11625991,0.98547457,-0.99397871,-1.8324281,-2.42200963,1.90617387,1.93741167,-2.88433965,0.27449852,-1.52606976,2.339446258,3.01359547])
很难说是什么,至少在重量连接哪些节点.这就是我所需要的一切.
我使用的是Kinect和OpenCV(我使用的是c ++).我可以同时获得RGB和深度图像.使用RGB图像,我可以像往常一样"播放",模糊它,使用canny(将其转换为灰度),但我不能对深度图像做同样的事情.每次我想用深度图像做某事我都有例外.
我有以下代码来获取深度图像:
CvMat* depthMetersMat = cvCreateMat(480, 640, CV_16UC1 );
CvMat* imageMetersMat = cvCreateMat(480, 640, CV_16UC1 );
IplImage *kinectDepthImage = cvCreateImage( cvSize(640,480),16,1);
const XnDepthPixel* pDepthMap = depth.GetDepthMap();
for (int y=0; y<XN_VGA_Y_RES; y++){
for(int x=0;x<XN_VGA_X_RES;x++){
depthMetersMat->data.s[y * XN_VGA_X_RES + x ] = 10 * pDepthMap[y * XN_VGA_X_RES + x];
}
}
cvGetImage(depthMetersMat, kinectDepthImage);
Run Code Online (Sandbox Code Playgroud)
问题是我无法对kinectDepthImage做任何事情.我试图将它转换为灰度,然后使用canny,但我不知道如何转换它.
基本上我想将canny和laplacian应用于深度图像.
我正在尝试使用PyBrain进行一些简单的NN训练.我不知道该怎么做是从文件加载训练数据.任何地方都没有在他们的网站上解释过.我不关心格式,因为我现在可以构建它,但我需要在文件中执行它,而不是手动逐行添加,因为我将有几百行.
我有一个带有5个油滴的视频,我正在尝试使用cv2.HoughCircles来查找它们.
这是我的代码:
import cv, cv2
import numpy as np
foreground1 = cv2.imread("foreground1.jpg")
vid = cv2.VideoCapture("NB14.avi")
cv2.namedWindow("video")
cv2.namedWindow("canny")
cv2.namedWindow("blur")
while True:
ret, frame = vid.read()
subtract1 = cv2.subtract( foreground1, frame)
framegrey1 = cv2.cvtColor(subtract1, cv.CV_RGB2GRAY)
blur = cv2.GaussianBlur(framegrey1, (0,0), 2)
circles = cv2.HoughCircles(blur, cv2.cv.CV_HOUGH_GRADIENT, 2, 10, np.array([]), 40, 80, 5, 100)
if circles is not None:
for c in circles[0]:
cv2.circle(frame, (c[0],c[1]), c[2], (0,255,0),2)
edges = cv2.Canny( blur, 40, 80 )
cv2.imshow("video", frame)
cv2.imshow("canny", edges)
cv2.imshow("blur", blur)
key = cv2.waitKey(30)
Run Code Online (Sandbox Code Playgroud)
我会说canny边缘检测器看起来非常好,而hough变换的结果非常不稳定,每帧都会提供不同的结果.
例: …
我正在尝试使用指南针移动机器人.我们使用指南针使机器人沿直线移动,它使用2个轮子,它们移动有点不同.因此我们将0到359之间的值设置为方向,然后检查当前方向,计算错误并修复它.像error = current_direction - 实际方向.
问题是,例如,如果我们的初始方向是90度而我们的机器人是45,那么错误将是45并且它将修复它.如果为0,则错误将为90并且将修复它.问题是如果它移动了一点多于0并且例如变为359,则误差将是-269,因此不是在一个方向上移动90而是在另一个方向上移动-269.
我使用错误的符号来决定移动哪个轮子以固定方向.任何想法如何解决它?
我有一个代表一种家谱树的数据集.每个节点有2个父母(第一代除外,他们没有父母).对于给定节点,其父节点可以来自任何前一代节点.例如,生成n中的节点可以具有n-1中的父节点和n-5中的另一个父节点.节点可以是其他几个节点的父节点.
基本上,对于每个节点,我都知道它的生成及其父节点.
我试图表示这个图表保持同一行中的同一代的节点.每一代都有10个节点,第一代除外.
到目前为止,我正在尝试"点"布局.当我只输入两代时它做得很好,但是当我输入3代时,它"太聪明"了,并以某种方式重新排列节点.
例如,以下数据代表3代:
[(的ObjectId( '530b2ad783a1a15e695c9711'),的ObjectId( '530b804883a1a15e695c972b')),(的ObjectId( '530b2ad783a1a15e695c971c'),的ObjectId( '530b804883a1a15e695c972b')),(的ObjectId( '530b2ad783a1a15e695c9709'),的ObjectId( '530b804883a1a15e695c9727')),(的ObjectId( '530b2ad783a1a15e695c970a'),的ObjectId( '530b804883a1a15e695c9727')),(的ObjectId( '530b2ad783a1a15e695c970b'),的ObjectId( '530b804883a1a15e695c9724')),(的ObjectId( '530b2ad783a1a15e695c970f'),的ObjectId( '530b804883a1a15e695c9724')),(的ObjectId( '530b2ad783a1a15e695c9714'),的ObjectId( '530b804883a1a15e695c9729')),(的ObjectId( '530b2ad783a1a15e695c970e'),的ObjectId( '530b804883a1a15e695c9729')),(的ObjectId( '530b2ad783a1a15e695c9711'),的ObjectId( '530b804883a1a15e695c9723')),(的ObjectId('530b2ad783a1a15e695c970e '),的ObjectId(' 530b804883a1a15e695c9723 ')),(的ObjectId(' 530b2ad783a1a15e695c971c '),的ObjectId(' 530b804883a1a15e695c9728 ')),(的ObjectId(' 530b2ad783a1a15e695c9719 '),的ObjectId(' 530b804883a1a15e695c9728 ')),(的ObjectId(' 530b2ad783a1a15e695c9714' ) ,ObjectId('530b804883a1a1 5e695c9726 ')),(的ObjectId(' 530b2ad783a1a15e695c9713 '),的ObjectId(' 530b804883a1a15e695c9726 ')),(的ObjectId(' 530b2ad783a1a15e695c9716 '),的ObjectId(' 530b804883a1a15e695c9722 ')),(的ObjectId(' 530b2ad783a1a15e695c9719 '),的ObjectId(' 530b804883a1a15e695c9722' )),(的ObjectId( '530b2ad783a1a15e695c970d'),的ObjectId( '530b804883a1a15e695c9725')),(的ObjectId( '530b2ad783a1a15e695c9715'),的ObjectId( '530b804883a1a15e695c9725')),(的ObjectId( '530b804883a1a15e695c9724'),的ObjectId( '530ba27c83a1a15e695c972d')) ,(的ObjectId( '530b2ad783a1a15e695c9713'),的ObjectId( '530ba27c83a1a15e695c972d')),(的ObjectId( '530b804883a1a15e695c9724'),的ObjectId( '530ba27c83a1a15e695c972e')),(的ObjectId( '530b2ad783a1a15e695c9709'),的ObjectId( '530ba27c83a1a15e695c972e')),(的ObjectId( '530b804883a1a15e695c9727'),的ObjectId( '530ba27c83a1a15e695c972f')),(的ObjectId( '530b2ad783a1a15e695c9709'),的ObjectId( '530ba27c83a1a15e695c972f')),(的ObjectId( '530b2ad783a1a15e695c9713'),的ObjectId( '530ba27c83a1a15e695c9730')),(的ObjectId( '530b2ad783a1a15e695c9709'),ObjectId(' 530ba27c83a1a15e695c9730 ')),(的ObjectId(' 530b2ad783a1a15e695c9713 '),的ObjectId(' 530ba27c83a1a15e695c9731 ')),(的ObjectId(' 530b804883a1a15e695c9725 '),的ObjectId(' …
我有一个简单的 Python 代码,它通过串行端口使用串行通信连接到 Arduino 板。
我正在使用 Python 库“pyserial”。它是Python2.7
我创建了一个连接,基本上是在做类似的事情
ser = serial.Serial("/dev/ttyACM0", 115200)
Run Code Online (Sandbox Code Playgroud)
在此之后,我使用 serial.write 向我的 arduino 板发送命令。我有一个自制的固件,可以读取命令并移动一些电机。
此代码正在运行,目前正在运行。虽然我每天连接和断开几次连接和我的机器人做一些事情。我总是刷新所有东西(serial.flush)。在某些时候,它只是失败了。它似乎连接,但没有执行任何操作。就像在某个时候串行端口损坏了一样。
一旦我重新启动计算机,一切正常。
知道如何在不重新启动计算机的情况下修复它吗?
拔下 USB 电缆不起作用。

这个图像只是一个例子.右上角是原始图像,左上角是色调,左下角是饱和度,右下角是值.可以很容易地看出,H和S都充满了伪影.我想降低亮度,因此结果选择了很多这些文物.
我做错了什么?
我的代码很简单:
vc = cv2.VideoCapture( 0 )
# while true and checking ret
ret, frame = vc.read()
frame_hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
cv2.imshow("h", frame_hsv[:,:,0])
cv2.imshow("s", frame_hsv[:,:,1])
cv2.imshow("v", frame_hsv[:,:,2])
Run Code Online (Sandbox Code Playgroud) 我有一个工作连接组件分析代码在C中工作.它实际上是"学习Opencv"一书的副本.
现在我将所有代码重写为Python,我在Python API中找不到某些功能,比如cvStartFindContours.
我想知道是否有人在Python中实现了基本的连通组件分析功能.我知道有一些库,但我正在寻找更简单的东西,只是一个函数或一段代码.
我不需要任何"大"的东西,因为我有一个带有2或3个白色圆圈的纯黑色图像,我想找到圆圈的数量及其中心.
我知道我可以自己编码,但我更喜欢使用某人的功能或简单的库.
编辑:我通过以下方式解决了它.
def find_connected_components(img):
"""Find the connected components in img being a binary image.
it approximates by rectangles and returns its centers
"""
storage = cv.CreateMemStorage(0)
contour = cv.FindContours(img, storage, cv.CV_RETR_CCOMP, cv.CV_CHAIN_APPROX_SIMPLE)
centers = []
while contour:
# Approximates rectangles
bound_rect = cv.BoundingRect(list(contour))
centers.append(bound_rect[0] + bound_rect[2] / 2, bound_rect[1] + bound_rect[3] / 2)
contour = contour.h_next()
Run Code Online (Sandbox Code Playgroud) 我将从代码开始,我希望它很简单:
import Queue
import multiprocessing
class RobotProxy(multiprocessing.Process):
def __init__(self, commands_q):
multiprocessing.Process.__init__(self)
self.commands_q = commands_q
def run(self):
self.listen()
print "robot started"
def listen(self):
print "listening"
while True:
print "size", self.commands_q.qsize()
command = self.commands_q.get()
print command
if command is "start_experiment":
self.start_experiment()
elif command is "end_experiment":
self.terminate_experiment()
break
else: raise Exception("Communication command not recognized")
print "listen finished"
def start_experiment(self):
#self.vision = ds.DropletSegmentation( )
print "start experiment"
def terminate_experiment(self):
print "terminate experiment"
if __name__ == "__main__":
command_q = Queue.Queue()
robot_proxy = RobotProxy( command_q ) …Run Code Online (Sandbox Code Playgroud) 我2年前用过opengl.在一个下午,我读了一个tuto,我画了一个立方体(然后学会了如何加载任何3D模型)并学会回家用鼠标移动相机.这很简单,不到100行代码.我没有完全得到管道,但我能够做点什么.
现在我需要为一些基本的东西刷新opengl,基本上我需要加载3D模型(任何模型)并在固定相机的情况下移动模型.我认为会是另一个下午.
我花了一天时间没有任何工作.我正在阅读推荐的tuto http://www.arcsynthesis.org/gltut/我没有得到任何东西,现在只绘制一个立方体你需要很多行并使用大量的缓冲区,使用一些特殊的着色器语法.. ..我到底想要画一个立方体.在它定义6个方面之前.
opengl发生了什么?有些人认为现在很好,我认为这是搞砸了.是否有任何简单的图书馆可以使我的生活更轻松?
python ×8
opencv ×4
pybrain ×2
arduino ×1
c++ ×1
graphviz ×1
hsv ×1
kinect ×1
lego ×1
networkx ×1
nxt ×1
opengl ×1
pygraphviz ×1
pyserial ×1
python-2.7 ×1
queue ×1
robotics ×1
serial-port ×1
usb ×1
visual-c++ ×1