2010/01/18

build handvu-beta3 on ubuntu

HandVu 是一套利用 OpenCV 來做手勢控制的函式庫,作者大概已經沒空再維護了, 有興趣的人可以自行參考。

在 ubuntu 9.10 上編譯,建議使用 OpenCV 1.0, 但是會遇到幾個錯誤,底下把 Patch 貼上來

diff -ruN handvu-beta3/cubicles/CascadeFileParser.yy handvu/cubicles/CascadeFileParser.yy
--- handvu-beta3/cubicles/CascadeFileParser.yy 2004-10-10 01:04:53.000000000 +0800
+++ handvu/cubicles/CascadeFileParser.yy 2010-01-18 09:24:21.000000000 +0800
@@ -60,6 +60,7 @@
////////////////////////////////////////////////////////////////////

%{
+#include <string.h>
#include "Cascade.h"
#include "Classifiers.h"
#include "IntegralFeatures.h"
diff -ruN handvu-beta3/cubicles/IntegralFeatures.cpp handvu/cubicles/IntegralFeatures.cpp
--- handvu-beta3/cubicles/IntegralFeatures.cpp 2005-10-29 01:47:04.000000000 +0800
+++ handvu/cubicles/IntegralFeatures.cpp 2010-01-18 09:19:54.000000000 +0800
@@ -62,6 +62,9 @@
////////////////////////////////////////////////////////////////////


+#include <limits.h>
+#include <alloca.h>
+
#include "cubicles.hpp"
#include "IntegralFeatures.h"
#include "Exceptions.h"
diff -ruN handvu-beta3/cubicles/IntegralFeaturesSame.cpp handvu/cubicles/IntegralFeaturesSame.cpp
--- handvu-beta3/cubicles/IntegralFeaturesSame.cpp 2004-11-11 09:58:58.000000000 +0800
+++ handvu/cubicles/IntegralFeaturesSame.cpp 2010-01-18 09:20:34.000000000 +0800
@@ -65,6 +65,7 @@
////////////////////////////////////////////////////////////////////


+#include <alloca.h>
#include "cubicles.hpp"
#include "IntegralFeatures.h"
#include "Exceptions.h"
diff -ruN handvu-beta3/cubicles/IntegralImage.cxx handvu/cubicles/IntegralImage.cxx
--- handvu-beta3/cubicles/IntegralImage.cxx 2005-02-12 10:00:59.000000000 +0800
+++ handvu/cubicles/IntegralImage.cxx 2010-01-18 09:41:57.000000000 +0800
@@ -64,6 +64,8 @@
////////////////////////////////////////////////////////////////////


+#include <stdio.h>
+#include <string.h>
#include <math.h>
#include <ostream>

diff -ruN handvu-beta3/cubicles/Scanner.h handvu/cubicles/Scanner.h
--- handvu-beta3/cubicles/Scanner.h 2005-02-12 10:00:59.000000000 +0800
+++ handvu/cubicles/Scanner.h 2010-01-18 09:41:34.000000000 +0800
@@ -63,6 +63,7 @@
#ifndef __SCANNER_H
#define __SCANNER_H

+#include <limits.h>
#include "IntegralImage.h"
#ifdef HAVE_FLOAT_H
#include <float.h>
diff -ruN handvu-beta3/handvu/CubicleWrapper.cpp handvu/handvu/CubicleWrapper.cpp
--- handvu-beta3/handvu/CubicleWrapper.cpp 2005-10-31 05:16:03.000000000 +0800
+++ handvu/handvu/CubicleWrapper.cpp 2010-01-18 09:53:24.000000000 +0800
@@ -21,6 +21,7 @@
* $Id: CubicleWrapper.cpp,v 1.13 2005/10/30 21:16:03 matz Exp $
**/

+#include <limits.h>
#include "Common.h"
#include "CubicleWrapper.h"
#include "HandVu.hpp"
diff -ruN handvu-beta3/handvu/FileHandling.cpp handvu/handvu/FileHandling.cpp
--- handvu-beta3/handvu/FileHandling.cpp 2005-08-16 08:14:26.000000000 +0800
+++ handvu/handvu/FileHandling.cpp 2010-01-18 10:12:57.000000000 +0800
@@ -21,6 +21,13 @@
* $Id: FileHandling.cpp,v 1.6 2005/08/16 00:14:26 matz Exp $
**/

+#include <string.h>
+
#include "Common.h"
#include "FileHandling.h"
#include "Exceptions.h"
@@ -135,8 +142,8 @@
fname[0] = 0;
ext[0] = 0;

- char* slashpos = strrchr(path, '/');
- char* dotpos = strrchr(path, '.');
+ char* slashpos = strrchr((char*)path, '/');
+ char* dotpos = strrchr((char*)path, '.');

if (slashpos==NULL) {
if (dotpos==NULL) {
diff -ruN handvu-beta3/handvu/HandVu.cpp handvu/handvu/HandVu.cpp
--- handvu-beta3/handvu/HandVu.cpp 2006-01-04 08:55:29.000000000 +0800
+++ handvu/handvu/HandVu.cpp 2010-01-18 09:50:37.000000000 +0800
@@ -24,6 +24,7 @@
// HandVu.cpp: main library implementation file
//

+#include <limits.h>
#include "Common.h"
#include "CubicleWrapper.h"
#include "Skincolor.h"
diff -ruN handvu-beta3/handvu/Mask.cpp handvu/handvu/Mask.cpp
--- handvu-beta3/handvu/Mask.cpp 2005-08-16 08:14:26.000000000 +0800
+++ handvu/handvu/Mask.cpp 2010-01-18 10:01:45.000000000 +0800
@@ -21,6 +21,8 @@
* $Id: Mask.cpp,v 1.7 2005/08/16 00:14:26 matz Exp $
**/

+#include <cstring>
+#include <stdlib.h>
#include "Common.h"
#include "Mask.h"
#include "Exceptions.h"

2010/01/13

洪朝貴之「扭曲的智財宣導及評鑑制度 迫使大學追逐『內耗型競爭力』」

請見洪朝貴之「扭曲的智財宣導及評鑑制度 迫使大學追逐『內耗型競爭力』」一文,或至洪教授 blog

這篇文章講了很重要的課題,專利、創新、與進步的關係。把章節標題摘述如下:

一、創新
二、擴散
三、忘記擴散的創新
四、傷害擴散的創新
五、讓真相擴散吧!

站的更高,就應該看的更遠

欲窮千里目,更上一層樓。

上面這句話是對的,但是站的更高,就能看的更遠嗎?常常很令人遺憾,有些人站的高卻只會產生更害怕的心,有些人站的高了卻因為目光短淺,反而眼前基本的事都看不到。

站的更高,就應該看的更遠,走的最前,就應該更鋒銳。

2010/01/07

你在「打造菁英」,還是「改造菁英」?

這標題是大師輕鬆讀353期〈新時代指揮官〉裡的,很早就想貼了,底下把該網址所摘要出來的觀點貼一下:

.觀點一:正視「高階菁英」自我發展的意願及可塑性
.觀點二:勿將「菁英培育」與「績效改善」混為一談
.觀點三:移轉焦點至關注「初階菁英」的培育

綜觀上面的觀點,若細看內容,有不少跟我貼過的員工的心聲很像,總共寫了二十幾點,也算嘔心瀝血之作。

觀點一,主要是講「個人意願」,其實這是可以引導,或是可以討論的,但是很大部份的情況是根本就沒有尊重個人意願,也沒去引導,沒有討論。很多長官以為尊重就是員工想做什麼就讓他做什麼,其實這真的是大錯特錯。尊重是一個日常生活上,尊重是心靈上與思維上的,巨細彌遺。正因為如此,引導的過程很花時間,而且容易讓人失去耐性,所以真正能「正視『高階菁英』自我發展的意願及可塑性」幾乎不存在。

觀點二,其實可以看成菁英是才是菁英,而不是要把爛人變菁英,需要做的是把菁英變的更好用。爛人之所以爛,就是因為爛,是沒辦法變好的。我以前是個農夫,爛掉的菜從來不可能變成生機勃勃。所以重點有時會變成,找出怎樣才是菁英人才。以前種菜時,你可以很容易從葉子一眼看出是好是壞,人才呢?是不是也有明顯的標記?答案是有的,但是不想在這邊多說,但是很肯定的,那種平常沒事在你身邊哈拉的,通常只是吃菜葉的蟲,而不是生機勃勃的菜。

觀點三,其實在講的是伯樂問題,已經是菁英的人自己會努力奮發向上,自己會主動學習,而沒經驗的優秀人才,幾年後常常會懷才不遇。不過....

若統合上面三點來看,其實有根本的二個問題,一個是溝通不足,這邊的溝通也可以說是篩選,另一個問題是管理上的制度與執行面問題。這邊不想說太多,只希望身為管理者能多好好想想,不要老是只看眼前,不要老是只急著獲利,重視菁英的發掘與培育。