这是在Processing官网上找到的一个例子:A Processing implementation of Game of Life

程序源代码:

使用说明:

按空格键暂停,并可以用鼠标点击格子来激活/取消激活某个格点,再按空格继续。

按R键重置并随机生成一些格点。

按C清空所有格点。

请查看全文看在线展示。
阅读全文

一、安装:

对于 Genuino 101(在美国叫做 Arduino 101),目前最新的 Arduino IDE 还默认不会支持,需要手动安装驱动。

将 Genuino 101 插入电脑 USB ,等待基本驱动安装完毕后,打开 Arduino IDE。

然后打开“开发板管理器”,在“开发板管理器”中找到“Intel Curie Bords by Intel”,在右边点安装。

等4个步骤全部下载安装完毕后,将 Arduino IDE 关闭,拔出 Genuino 101。

重新打开 Arduino IDE ,插入 Genuino 101。在开发板选择中选中 Genuino 101。端口应该会自动识别,如果没有正确识别,再勾选正确的端口。

二、测试:

本段参考Arduino.cc官网指南:https://www.arduino.cc/en/Tutorial/Genuino101CurieIMUOrientationVisualiser

  1. Genuino 101入门中所述,设置Arduino软件(IDE)。
  2. 连接101和用户电脑。
  3. 启动Arduino软件(IDE),并从“工具 > 开发板” 菜单项中选择Arduino/Genuino 101。
  4. 由开发库管理器中安装Madgwick 库。可打开Arduino软件(IDE),选择”Sketch -> Include Library -> Manage Libraries”。然后搜索’Madgwick’ 并直接安装开发库。请参阅开发库安装指导 了解安装和导入开发库的更详细解释。
  5. 下载启动Processing软件 ,并使用如下所示处理代码创建一个文件。
  6. 修改串行端口,使用用户101开发板正在使用的端口号(参阅”处理代码”章节)。
  7. 上传CurieIMU 示例至用户101开发板,请确保开发板保持水平和静止以便进行精确校准。
  8. 几秒钟后,运行Processing代码,调整开发板方向,查看程序对开发板的可视化显示。

Genuino 101 的代码

Processing 的代码

运行视频:

https://www.taho.cc/wp-content/uploads/genuino101test.wmv

知乎上有个问题:物理专业自学计算机应该学些什么?

题目大概是说他物理本科大四了,申请去美国读物理博士,但自己对计算机有很大兴趣,为了考虑以后的饭碗,想自学计算机。自己对计算机图形学有兴趣,希望得到一些建议。

回答的人不少,有几个人的回答震撼到我了。


第一个回答:

作者:陈然
链接:https://www.zhihu.com/question/23212279/answer/24061341
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

个人站的角度不同,现在的答案基本都是从图形学的角度建议,我换个角度。

从研究生计算机科学做研究的角度来讲,我认为本科最适合的专业首先是物理,其次是数学,再次才是计算机。数学学的太抽象,抽象层次太高,研究现实问题的人往往处在鄙视链的底端。计算机学的太底层,对于概率论、随机过程、线性代数等学科学的太少,不了解建模分析的那套方法论。而物理学一方面的数学知识足够多,另外一方面主要研究的方法也是对这个世界建模,然后进行观测,这与前沿的机器学习领域做的事情几乎是一样的。至于会不会写代码,其实科研里面要写的代码不多,主要都是在推公式,研究如何设计模型使得其拥有很多良好的性质。代码很多时候写写matlab就可以了。

所以恭喜你,如果你想转行做CS的科研,你有很大的优势。事实上,很多CS领域的大神都是学物理的,比如华人图灵奖得主姚期智,CMU Machine Learning领域大神Alex Smola。

如果你真的励志做CS相关的研究的话,物理PhD的选择最好到CS极好的学校,比如UCB, CMU, MIT, Stanford,一般这些学校都可以辅修Machine Learning的Master, 多修CS相关的课程,都是很好的选择。Coursera上的Machine Learning课程都很入门,如果想进阶,你可以看看CMU 10701(Machine Learning), 10702(Statistical Machine Learning), 10708(Probabilitic Graphic Model) 课程的课件、视频、相关阅读和作业,基本都不需要写代码,主要是数学证明、建模和分析。

当然,如果你想做应用而不是做理论什么的,当我以上没说。


第二个回答:

作者:Milo Yip
链接:https://www.zhihu.com/question/23212279/answer/23940891
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

其实在计算机图形学里有很多与物理相关的课题,例如物理模拟(刚体、柔体、流体等)、基于物理的渲染(光源、材质、媒介等),还有一些涉及物理的跨学科课题,例如生物力学、基于物理的声音渲染、光场摄影等等。简单介绍几本书

有空可以看看最前沿的图形学发展,特别是当中涉及物理部分的

看看那些文献的作者网站,可能会发现不少研究者都有物理背景。

我觉得能做理论物理研究的人,其智商做哪种科学问题也不大吧。而计算机科学之本就是算法,无论是哪一个应用方向都是必须的,建议深入学习。个人不建议浪费时间在API、OS、UI编程上面,不竟这些东西许多人都能做,有研究能力的人可以探索新世界。因为游戏、动画、电影这些娱乐工业,计算机图形学的职位在行业上也有需求。


第三个回答:

作者:徐枭涵
链接:https://www.zhihu.com/question/23212279/answer/27455609
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

我是理论物理大二的…给师兄回答这个问题吧。
================================================
当师兄看到很多API繁杂但无从下手,答案是唯一的:多写。
再说说我的建议吧,
掌握一门快速开发语言:强力推荐Python,因为有scipy和numpy存在。可以把这玩意当Matlab用。我做过测试,进行大矩阵乘法numpy的速度比matlab快50%,这二者都比mathematica快20倍…而且python有一个很好的web framework django,结合html css,可以写出不错的网站(比如知乎)如果你是OI的,数据结构神马不用太多虑,直接上计算机图形学吧。
建议可以OpenGL+PhysX(物理引擎)+.NET/Cocoa(win/mac)一起做一个项目,像我做的是一个无人机控制的仿真平台。这个对于学习三这玩意都有效。特别是mvc的构建方式。
另外还有一个很轻巧的构建计算机图形学的方式是webgl,很漂亮。或者直接unity3d(游戏引擎)引擎亦可。
如果你会了html也就是如果你会了javascript,建议入手node-webkit,二十分钟构建一个跨平台桌面应用。对于交互UI我比较倾向于两种,一个是轻量级的html+js的形式,好看简单,一个是unity虚拟现实,我最近做的一个项目就是这两种结合的模式。强力推荐CUDA(GPU计算),物理口必备…想在自己的PC上模拟核聚变CUDA绝对是居家旅行,杀人放火必选。而且CUDA的模型天生是为物理学家设计的。同时需要学点cpp,可以把鄙校丁泽军老师计算物理A书上的习题全部CUDA一遍基本就练习的差不多了
micro.ustc.edu.cnML/DataMining我只看过一些些,这些东西如果自己写算法的话需要用c/cpp如果只是玩玩可以用python+一堆库的方式来搞。主要可能还是数据源吧。嵌入式&单片机,如果不慎入实验物理坑会点单片机嵌入式还是有必要的,入个树莓派玩玩ROS吧。从树莓派+arduino玩的方式入手玩起来很简单无压力,最练手的就是写机器人控制了。这个是从机械折腾到前段的。
树莓派既是典型的嵌入式Arm开发版,优势在于社区庞大。
arduino是一种高度简化后的单片机。比起51等用起来真的简单多了

移动开发:学习学习swift吧。玩玩iOS。。总是觉得Android怪怪的

学习轨迹:
1.熟练使用linux/unix(格式化硬盘一个月内可以生存)
2.选一个自己顺手的IDE(vim/emacs/VS),基本熟练cpp、python(均指一万行代码,可以写写计算物理习题)
3.搭建一个自己的服务器(using aws.amazon.com ec2)
4.写一个桌面app .net/cocoa,(学c#/o-c),在这里折腾OpenGL CUDA等
5.写一个绚烂的个人网站use Django&html5&css3&webgl
6.研究妹子回你短信速度和她对你好感度的关系(使用支持向量机/deep learning)
7.学习CUDA并在你的pc上模拟EAST using MHD model in FEA
(其实能跑出来一个N-S方程出来个卡门涡街就很好了)
8.学习单片机并且控制一架四轴飞行器给那个追了四年没追的女神泼一盆冷水(someone你丫两年以后给我等着)。
可以适当从ROS+树莓派入手,加上一些有意思的硬件比如kinect什么的,就很好玩,推荐学习OpenCV(人脸识别)+讯飞各种接口(语音)。

对了。。。工程控制论,或者什么ML,DataMining的数学比物理口的数学真的是弱爆了。一群不用解偏微分方程的渣渣。

顺便抛我的blog stlover.org(呃最近好像数据库挂了)
就这些差不多了…剩下做点小项目自己也就会了
=====================
操作系统建议看看,就是看看而已。。我大二选了操作系统课最后发现完全没听。
编译原理没有必要,想深入学推荐MIT的计算机结构和解释同时学习LISP


第四个回答:

作者:Joe Physwf
链接:https://www.zhihu.com/question/23212279/answer/102771418
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
如果读完PhD在转计算机,真真是浪费了。计算机对高等物理那些基本不需要,倒是数学是很需要的,但PhD依然是浪费。
那些图形学,虽然涉及到物理,但是最多也是本科就够了,图形学的很多东西都是在投机取巧,那些有颠覆的理论基本上根物理无关,细节的东西都是在拼奇技淫巧。不是不懂物理,而是上帝的高度凡人根本无法企及。你想两面镜子相互反射这种东西,在计算机看来就是无限循环(卡死),但是上帝那里却是realtime的,一点都不卡。
其他很多计算机领域跟物理就更加没有关系了,互联网,大数据,人工智能都没有。如果你对两者都割舍不了的话,那你应该关注计算机基本理论这些东西。你对软硬件结合很感兴趣,但是这些难度不大,而且你一旦了解之后估计很快就失去兴趣了,因为很容易理解掌握。真正难的是计算机物理基础层面的东西,那才是真正软硬结合的地方。半个多世纪之前,贝尔实验室发明了三极管,现在半导体技术已经日渐迟缓了,量子计算机,量子传输这些技术充满想象。当然未来很难说,但发言权在于那些位于基础理论前沿的那些人,很明显你有机会。实用技术有时的确很吸引人,但那些都是细致末节,你穷尽一生改变的只是一枝一叶,并且或早或晚都将坠落。

我的感悟:

第一个回答站在常春藤留学生的视角给出了实用的建议。给我的感觉就是,国外的课程比国内大学的课程领先了太多了,似乎这些课程已经完全成熟和系统化了,而国内还比较杂,很多人还必须去看网络课程来学习。这从一个侧面能看出,国内学生相比国外学生这方面受教育的深度和看问题的视野是有差距的,而且这样网络封闭的话,很不好弥补。

第二个回答罗列了不少书籍,都是物理和游戏、计算等相关的计算机书籍。这类书籍国内也越来越多,不过不得不说的是,大多好的教材,似乎都是外国人写的,中国引入翻译版(书的好坏甚至还要取决于译者的水准)。也就是说,好的教材都是英文的,大家最好学好英文,方便自己掌握知识。这也提醒我们,我们与他们的差距还是很大的。

第三个回答深深震撼到我了。一个大二学生,已经对计算机技术掌握了这么多,真是不简单啊。我感觉他做的事情如果让我去做,没有几年是做不完的。其中他讲到了Python、C#编程,js编程、html、css、javascript(也许他还会java呢),swift,用到了U3D,还会使用SUDA,也玩开源硬件,arm编程,而且非常擅长Python(用Python结合其他框架做了网站,做了GUI编程等)。学习MachineLearning(机器学习)、DataMining(数据挖掘),还会OpenCV、讯飞API。这个答案是答主在2年前回答的,估计现在已经用到了Google、百度的接口(语音接口还是很强大的),做模式识别,可能还有很多我根本没有听过的,也不知道存在的技术。我非常佩服他,

第四个回答比较理性。他简单澄清了物理和计算机的关系,并建议去做最基本的事情。题主感谢了他,而且题主已经走上了计算物理的道路。“我现在业余时间主要关心机器学习方面的东西,因为背后的数学支持挺对我胃口。我自己的科研方向也正是量子计算,我还在尝试涉猎量子计算+机器学习的交叉。”题主这样回答。


我摘下眼镜,停下来想了想。

普通大众忙忙碌碌,做的事情对他们来说可能过于简单了。世界上就是有这么一小部分人,走在人类发展的前列。虽然和大家一样一日三餐,闲了也玩耍逗乐,但静下来的时候,很多人选择看电视打牌睡觉娱乐,而他们选择去钻研他们的兴趣。

上面的只是物理和计算机的话题。其实,无论是摄影,研究昆虫,或者是别的什么,只要是钻进兴趣里了,人生不会太枯燥,追求也就不会太乏味。我不想说谁的生活更有意义,至少,这么些人的其中一些人做的事,会影响很多人。我感觉,他们活着的意义更大一些吧。

在广场的大屏幕上看到了随韵律跳动的闪烁图谱,就想知道用Processing该怎样编出来这样的效果呢?于是就出现了下面的拙劣产品。

优点:有点效果了;

缺点:不能随韵律跳动,也没有节奏,需要改进。

源代码:

效果:

阅读全文

代码:(代码转载自:http://ubaa.net/shared/processing/opencv/blob.html

[cc lang=”c”]
import hypermedia.video.*;

OpenCV opencv;

void setup() {

size( 640, 480 );

// open video stream
opencv = new OpenCV( this );
opencv.capture( 640, 480 );

}

void draw() {

background(192);

opencv.read(); // grab frame from camera
opencv.threshold(80); // set black & white threshold

// find blobs
Blob[] blobs = opencv.blobs( 10, width*height/2, 100, true, OpenCV.MAX_VERTICES*4 );

// draw blob results
for( int i=0; i

1.Processing 的祖父 John Maeda 在TED的演讲

他工作于设计、科技、领导力以及它们交叉汇合的领域。 他曾经任教于著名的 MIT Media Lab Aesthetics and Computation Group(媒体实验室美学与计算小组) 正是在那期间,他所带的学生 Casey Reas 及 Ben Fry 发明了 Processing。 由这两位作者撰写的蓝色封面的 Processing Handbook 一书便是由他作序。 作为 Processing 的前身,教学用编程语言Design By Numbers(DBN)也是由他开发。 不论是 Processing 还是 Design By Numbers,他们都有着相同的初衷——让更多的非程序员快乐地学会编程。 现在他的身份是 Rhode Island School of Design / 罗德岛设计学院 的校长。 他的推特帐号为 @johnmaeda 他有一本影响深远的著作《简单法则》(The law of simplicity)。

2. Hello World! Processing(关于编程语言Processing的纪录片)

内容来自于:http://arduino.cc/en/Reference/Comparison

The Arduino language (based on Wiring) is implemented in C/C++, and therefore has some differences from the Processing language, which is based on Java.

Arduino 语言遵循C/C++标准,而 Processing 语言遵循的是Java标准,因此会有一些不同。

 

Arrays 数组

Arduino Processing
int bar[8]; 
bar[0] = 1;
int[] bar = new int[8]; 
bar[0] = 1;
int foo[] = { 0, 1, 2 }; int foo[] = { 0, 1, 2 }; 
or 
int[] foo = { 0, 1, 2 };

 

Loops 循环

Arduino Processing
int i; 
for (i = 0; i < 5; i++) { … }
for (int i = 0; i < 5; i++) { … }

 

Printing 输出

Arduino Processing
Serial.println(“hello world”); println(“hello world”);
int i = 5; 
Serial.println(i);
int i = 5; 
println(i);
int i = 5; 
Serial.print(“i = “); 
Serial.print(i); 
Serial.println();
int i = 5; 
println(“i = ” + i);

 

Reference Home

 

Corrections, suggestions, and new documentation should be posted to the Forum.

 

The text of the Arduino reference is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.

首先看看Processing是如何获取Arduino的信息的。

Arduino从串口输入信息,可以被Processing一位一位的读取。

此处是Processing官网的Serial库的函数说明:

Issues with the Serial Library and specific platforms are documented on the Processing Wiki.

 Serial Event

serialEvent()

今天的实验是:用电位计控制Processing中矩形块的大小。

我们可以在 http://ubaa.net/shared/processing/opencv/ 找到 OpenCV Processing and Java Library。

我提供的下载地址: http://yunpan.cn/Q9yQsLF8HjZSc (附带高清版视频操作演示)

网站说明如下

This implementation is not a complete port of OpenCV. Currently, this library supports :

  • real-time capture
  • video file import
  • basic image treatment (brightness, contrast, threshold, …)
  • object detection (face, body, …)
  • blob detection

Future versions will include more advanced functions such as motion analysis, object and color tracking, multiple OpenCV object instances …

For more information about OpenCV visit the Open Source Computer Vision Library Intel webpage, the OpenCV Library Wiki, and the OpenCV Reference Manual (pdf).

由于是国外网站,有些朋友可能打不开,现提供我备份的下载地址: http://yunpan.cn/Q9yQsLF8HjZSc

 另外,最新的库下载地址在这里:https://github.com/atduskgreg/opencv-processing/releases

安装方法:

Installation instructions

1.Begin by downloading and installing the implementation of OpenCV appropriate to your platform:

  • For Windows, download the OpenCV release version 1.0 (not the 1.1pre1) package and follow the instructions of the installer. notes: be sure to select the additional tasks ‘Add ….OpenCV bin to system PATH’ during installation (or you need to add the rigth path by yourself later) and reboot your machine.

  • For MacOS X, dowload the opencv-framework-1.1.dmg image and install the package by following instructions of the installer

 

  • For Linux users, if your distribution doesn’t propose packages in your favorite Package Manager tool, download the latest opencv-*.tar.gz archive and compile/install the source files as describe in the Linux install guide.

2.Download, unzip, and move the OpenCV Processing Library into your Processing libraries folder, or for Java users copy the content of the library folder in one of your Java Extensions folder.

DUE TO AN ERROR WHILE PACKAGING THE ZIP FILE, THIS VERSION UPDATED SHOULD SOLVE THE WINDOWS PROBLEM ABOUT DLL DEPENDENCIES AND OPENCV 1.0

在 Windows 中安装 OpenCV Processing Library
在 Mac 中安装 OpenCV Processing Library

3.Optionally, you can download these OpenCV Processing examples or, for pure Java users, these OpenCV Java samples.

4.Previous library version can be downloaded here

视频操作演示

PS:下载地址中包括了视频的高清版,可以下载查看。

 

Documentation

  • See the What’s New document for all new implementation or for some of the most important changes
  • Processing documentation … 🙂 start with this page (also include in the OpenCV Processing Library zip archive)
  • For Java users, the Javadoc reference for this project (online only). For offline documentation dowload the OpenCV Java Library API

Credits

The OpenCV Processing Library is a project of the Atelier hypermédia at the École Supérieure d’Art d’Aix-en-Provence. It is maintained by Stéphane Cousot and Douglas Edric Stanley. Special thanks to the openframeworks community for support and the C++ Binary Quicksort method.

OpenCV

The main object for all computer vision processes.

An example(举例): the usage of the first one (OpenCV)

Name OpenCV
Examples
Description The main object for all computer vision processes.
Syntax OpenCV(parent);
Fields
BILATERAL Blur method
BLUR Blur method
BUFFER Type of Image
CASCADE_FRONTALFACE_ALT Standard Haar classifier cascade file used for object detection
CASCADE_FRONTALFACE_ALT2 Standard Haar classifier cascade file used for object detection
CASCADE_FRONTALFACE_ALT_TREE Standard Haar classifier cascade file used for object detection
CASCADE_FRONTALFACE_DEFAULT Standard Haar classifier cascade file used for object detection
CASCADE_FULLBODY Standard Haar classifier cascade file used for object detection
CASCADE_LOWERBODY Standard Haar classifier cascade file used for object detection
CASCADE_PROFILEFACE Standard Haar classifier cascade file used for object detection
CASCADE_UPPERBODY Standard Haar classifier cascade file used for object detection
FLIP_BOTH Flip mode
FLIP_HORIZONTAL Flip mode
FLIP_VERTICAL Flip mode
GAUSSIAN Blur method
GRAY Colorspace of image
HAAR_DO_CANNY_PRUNING Haar classifier flag
HAAR_DO_ROUGH_SEARCH Haar classifier flag
HAAR_FIND_BIGGEST_OBJECT Haar classifier flag
HAAR_SCALE_IMAGE Haar classifier flag
INTER_AREA Interpolation method
INTER_CUBIC Interpolation method
INTER_LINEAR Interpolation method
INTER_NN Interpolation method
MAX_VERTICES The maximum number of contour points available to blob detection (by default)
MEDIAN Blur method
MEMORY Type of Image
MOVIE_FRAMES Movie info selector (not yet implemented)
MOVIE_MILLISECONDS Movie info selector (not yet implemented)
MOVIE_RATIO Movie info selector (not yet implemented)
RGB Colorspace of image
SOURCE Type of Image
THRESH_BINARY Thresholding method
THRESH_BINARY_INV Thresholding method
THRESH_OTSU Thresholding method
THRESH_TOZERO Thresholding method
THRESH_TOZERO_INV Thresholding method
THRESH_TRUNC Thresholding method
height OpenCV image/buffer height
width OpenCV image/buffer width
Methods
ROI() Set image region of interest to the given rectangle.
absDiff() Calculate the absolute difference between the image in memory and the current image.
allocate() Allocate required buffer with the given size.
blobs() Blob and contour detection.
blur() Smooth the image in one of several ways.
brightness() Adjust the image brightness with the specified value (in range of -128 to 128).
capture() Allocate and initialize resources for reading a video stream from a camera.
cascade() Load into memory the descriptor file for a trained cascade classifier.
contrast() Adjust the image contrast with the specified value (in range of -128 to 128).
convert() Convert the current image from one colorspace to another.
copy() Copy the image (or a part of it) into the current OpenCV buffer (or a part of it).
detect() Detect object(s) in the current image depending on the current cascade description.
flip() Flip the current image around vertical, horizontal or both axes.
image() Return the current (or specified) OpenCV image
interpolation() Set global interpolation method.
invert() Invert image.
jump() Jump to a specified movie frame.
loadImage() Load an image from the specified file.
movie() Allocate and initialize resources for reading a video file from the specified file name.
pixels() Retrieve cuurent (or specified) image data.
read() Grab a new frame from the input camera or a movie file.
remember() Place the image (original or current) in memory.
restore() Revert to the original image.
stop() Stop OpenCV process.
threshold() Apply fixed-level threshold to the current image.
Usage Application
Related