不出意外的话 这应该是自己最后的一个寒假了吧 要做的事情还是挺多的 希望自己都能一一完成
  • 课程上:又打了快一个学期的酱油了 假期里该把拉下的课程给补上来 ,想想有 C++ 、操作系统、自控、电机拖动、--
  • 自强队方面么主要就是MFC和opencv了
  • 创新项目的事情 java 和安卓
  • 剩下来的就是继续rails的学习和ubuntu的使用了
  • 买了两本书《送你一颗子弹》《目送》 希望自己能看完
就一个月的时间 
Steven Meng
2013.1.18
 
接上一篇Rails学习笔记(4),继续学习rails吧。
  • 关于git的使用(update+)
上一篇Rails学习笔记(4)中提到了关于git的一些简单的&常用的指令,其中提到了一些使用过程中遇到的问题和解决办法,现在就这些问题做一个简单的explain。
问题(1):fatal: remote origin already exists
origin是自己在github建立的远程仓库的默认仓库名。该错误提示表明origin仓库已存在,因此在新建仓库时回报错。通常添加文件到自己的远程仓库的指令格式为:

 
继续学习Rails,以下是学习Agile Web Development with Rails (4th edition)中遇到的问题、其相应的解决方法和个人的一些理解和体会。
Rails学习笔记(3) http://menghuadong.weebly.com/3/post/2013/01/rails3.html

  • 关于git的使用(update)
1
2
3
4
5
git add .
git commit -m 'message about this commit'
/*上面两句可合并为 git -a -m 'message about this commit' */
git remote add origin https://github.com/user/pro_name.git
git push origin master  

 
按照敏捷web开发 第四版学习rails,其中遇到的最大问题就是因rails版本差异所造成的一些问题。下面是自己在学习该书中的一些笔记和体会,写下来和大家一起分享下。

  • 我的rails环境
 OS:Ubuntu 12.04 LTS
 Rails:3.28
 Ruby:  1.87
  • 书上的一些问题
ITERATION A2 中关于对app/views/layouts/application.html.erb的修改。因为书上rails的版本是3.0,当时还没有引进asset pipeline的概念,因此在加入css文件后需要修改。但在3.1以后,rails引入了asset pipeline,该文件就不需要修改了,因为rails会依据application.html.erb(资源清单)默认加载所有在asset目录下的css和javascript文件。
以书上该句为例

 
前些天学习的一些东西。主要是利用opencv中camshiftdemo算法实现物体的颜色的追踪和识别。这是前面一部分,主要包括对目标物体颜色的截取和对截取图像进行相关的文件处理。
这次学习的最大收获是在opencv中进行coding时,最好避免C接口和C++接口函数的混用;虽然最后编译会通过,但是在运行exe时就会出现异常。
详见http://stackoverflow.com/questions/13686606/can-opencv-be-developed-using-c-and-c-together#comment18806065_13686606
实现代码和注释如下。

 
《OpenCV 2 Computer Vision Application Programming Cookbook》
   Chapter 6 Filtering the Images

  1. 滤波器。第一次接滤波器的概念,是在大二的电子设计实验课和信号与系统这两门课上。顾名思义,滤波,就是将信号的某些个频段的波给去掉,比如说像低通滤波器(low-pass filter),就是将高频段的波去掉,只允许低频波通过。对应到图像处理上,就是去观察图像的各个像素值的变化和分布。比如说,一副画有天空的图片,其大部分颜色都是蓝色,所以其像素变化小,可以归到“低频段”;相反的,一副画有各种场景、人物、物体的图像,其像素种类多、变化快,相对的就可以归到“高频段”了。工程上将这种方法叫做频域(frequency domain)分析,而在图像处理上叫做空间域(spatial domain)分析。这也是工程概念在图像处理上的一个典型应用。
  2. 卷积。在大二的复变函数和信号与系统这两门课上学过。不过因为遗忘再加上当年没学好,所以在看这章的时候相对来说有些吃力。在这里,卷积是图像处理中好多变换的基础,而其功能的实现主要是由其卷积核的形式来决定的。这个核本质上是一个大小固定、由数值参数参数组成的一个数组,数组的参考点(anchor pointer)通常位于数组的中心。以一个3*3卷积核为例:若要计算一个特定点的倦极值,将核的参考点与该点对应,核的其余元素与特定点周围的像素一一对应,将这些值相乘求和,并将结果放到参考点所对应点的位置。通过在整个图像上扫描卷积核,就可以实现对图像所有像素值的卷积操作从而实现莫种图像变换。
  3. Sobel Filter:求导(近似)。参考《学习OpenCV》P171:Sobel导数并不是真正的导数,因为Sobel导数定义在一个离散空间之上。Sobel算子真正表示的多项式拟合,也就是说,x方向上的二阶Sobel导数并不是真正的导数。它是对抛物线函数的局部拟合。这么理解,导数的大小表示的数值变化的程度,对应到图像处理上,就是反映各个像素值变化的快慢了(高数不好,先这么理解了)。

 
《OpenCV 2 Computer Vision Application Programming Cookbook》
  Chapter 5:Segmenting images using watersheds

断断续续地学习着OpenCV;书本已经看到了第五章,是关于分水岭算法(Watersheds algorithm)的;花了挺长的一段时间在这算法和代码的理解上,也查看了很多相关的资料介绍;不过还是不能很好的去理解该算法的使用原理和方法。

函数介绍:
C++: void watershed(InputArray image, InputOutputArray markers)
下面内容来自:OpenCV官方文档介绍
The function implements one of the variants of watershed, non-parametric marker-based segmentation algorithm, described in [Meyer92].
Before passing the image to the function, you have to roughly outline the desired regions in the image markers with positive (>0) indices. So, every region is represented as one or more connected components with the pixel values 1, 2, 3, and so on. Such markers can be retrieved from a binary mask using findContours() and drawContours() (see the watershed.cpp demo). The markers are “seeds” of the future image regions. All the other pixels in markers , whose relation to the outlined regions is not known and should be defined by the algorithm, should be set to 0’s. In the function output, each pixel in markers is set to a value of the “seed” components or to -1 at boundaries between the regions.


大致解释一下:该算法借鉴了地理学上的一些概念,将图像看成是一幅地图,根据图像中物体梯度的大小,将高梯度的看成是山脉,低梯度的看成是盆地或者是山谷,这样有助于分割目标;通过模拟浸入的过程,山谷中水越来越多,梯度越来越高,就会流过低些的山脉,从而流到别的山谷中,那么他们就连成了一片区域。区域分割的要求是把不同的标记分割成不同的地方。所以如果一直注水,可能就会覆盖别的区域了。这时算法就采取某种方法使修大坝(-1作为分界线)使标记的不同区域不会因为注水而相连,他们会互不相干的扩张领地,直到把整个领地都扩张完为止。

下面是一个简单的应用
  • 首先加载一张图片,之后将图片转换成二进制图片,并进行相应的阈值化处理,使图片前后景更加分明清楚

 
此提示信息表示是你所启用的端口已经被占用了,所以:

1.输入命令(找到3000的所在端口pid):
netstat -tulpn | grep 3000
当然,你会看到-->
tcp  0  0 127.0.0.1.3000  0.0.0.0:*  LISTEN
1877/ruby
2.输入命令(杀死被占用的pid):
kill -9 1877
3.重新启动ruby script/server 即可
第二种方法:
用ps命令查看当前终端中开启的所有进程,当然,你会发现一个标明是ruby的进程,我们可以看到它的PID(假定PID为6523)。所以执行下面的命令: kill -9 6532
然后重新进入rails工程里面,启动ruby script/server即可

 
大三 开始跟随学长做一些项目 涉及到一些网络开发和编程 因此着手开始学习ROR(Ruby on Rails)
下面是ubuntu12.04下配置ror开发环境的的过程、遇到的问题以及相应的解决方法。
--------------------------------------------------------------------------------------------------------------------------------------
       运行过程中一个主要的问题是:无法找到RMagick和 libmagick9-dev 
       解决方法:sudo apt-get install libmagickwand-dev
       然后再输入:sudo gem install rmagick即可

       具体可参考:http://www.cnblogs.com/ericchen/archive/2012/07/09/2583823.html
  • 之后查看相应的版本号,终端输入
       $ rails -v
       $ ruby -v

       显示相应版本号即说明安装完成
  • 接下来进行测试:
       在指定目录下建立相关测试文件:
       $ rails new demo
       下面内容为指令输入后终端的显示内容