在Debian Jessie上进行OpenCV编程

Debian Jessie对OpenCV的运行环境和开发库都进行了较大的改动。例如,libcv-dev包已经被重命名为libopencv-dev等。此外,相关动态链接库都使用libopencv_作为前缀进行命名。在链接是使用-lcv这样的方法已经不再适用了。所以,这篇文章是为了将如何编译和运行OpenCV程序的方法记录下来。

安装OpenCV开发环境

sudo apt-get install libopencv-dev

查看安装后的库和头文件

$ find /usr/lib -name "*opencv*"
...
/usr/lib/x86_64-linux-gnu/libopencv_core.so
...

$ find /usr/include -name "*opencv*"
/usr/include/opencv
/usr/include/opencv2
/usr/include/opencv2/opencv_modules.hpp
/usr/include/opencv2/opencv.hpp

Hello OpenCV

////////////////////////////////////////////////////////////////////////
//
// hello-opencv.cpp
//
// This is a simple, introductory OpenCV program. The program reads an
// image from a file, inverts it, and displays the result.
//
////////////////////////////////////////////////////////////////////////
#include <opencv/cv.h>
#include <opencv/highgui.h>

int main(int argc, char *argv[])
{
  IplImage* img = 0;
  int height, width, step, channels;
  uchar *data;
  int i, j, k;

  if (argc < 2) {
    printf("Usage: main \n\7");
    exit(0);
  }

  // load an image
  img = cvLoadImage(argv[1]);
  if (!img) {
    printf("Could not load image file: %s\n",argv[1]);
    exit(0);
  }

  // get the image data
  height    = img->height;
  width     = img->width;
  step      = img->widthStep;
  channels  = img->nChannels;
  data      = (uchar *)img->imageData;
  printf("Processing a %dx%d image with %d channels\n",
         height, width, channels);

  // create a window
  cvNamedWindow("mainWin", CV_WINDOW_AUTOSIZE);
  cvMoveWindow("mainWin", 100, 100);

  // invert the image
  for (i = 0; i < height; i++)
    for (j = 0; j < width; j++)
      for(k = 0; k < channels; k++)
        data[i * step + j * channels + k] =
                255 - data[i * step + j* channels + k];

  // show the image
  cvShowImage("mainWin", img );

  // wait for a key
  cvWaitKey(0);

  // release the image
  cvReleaseImage(&img);
  return 0;
}

编译

$ g++ -o /tmp/hello-opencv hello-opencv.cpp -lopencv_core -lopencv_highgui

运行

$ /tmp/hello-opencv /tmp/test.jpg

这个程序会创建一个窗口并且将输入的图像转换成反色显示。

回到未来

过去一年里发生了很多事情,其中又有很多我都已不记得了。这种感受非常粘,就像时间停止在某一刻不得动弹。我匆匆得拿了新护照,买了房子,又匆匆得将这一个个看上去重大的人生转折抛之脑后。没有记录,就像什么事情都没有发生过一样。孤独的感受之一就是粘,其他是停滞和寂静。而我对过去两年的记忆,两点一线的单调还有空荡荡的面临花园的房子,让这感受如冷却一半的岩浆一样裹着暗的外衣淌进每一分钟里。

日本经济似乎越来越不好了。自从大地震以后,安倍内阁上台后替换了日银总裁,印钞,增加消费税就接踵而来。物价油价飞涨。这让我放弃来买回来一台车填满车库的白日梦。于是,家门口的奶瓶盒子更加成了自己的禁卒。休日偶尔有艳阳反射到邻居家的窗户上照进我的书房。让初秋下午四五点的时间更像极了虚幻的迷梦,镀着晃眼的金。妻在巴塞罗那念书。下午三点发来一个吻,“早安”——时间从来都没有动弹,它还停在我的早晨。结婚五年了,我们似乎越发离不开彼此。妻子不在家,让我的钟少了一根轴。

一星期前我去了北海道,跟两位日本同事一起。本是去登山,不想夏季在屋久岛留下的伤在一天的跋涉之后复发,只能在第二天转为专职司机。独自开着租来的车沿349号国道横穿知床半岛时,突然觉得自己在hot pursuit的游戏场景里。路上除了绝景,空无一人。第三天伤势好转,在雌阿寒岳看到了直径约两千米的火山口。那里有些半冷却的岩浆,缓慢的沿着峭壁爬向谷底,有些则像那偶然停止的时间一样,挂出一个尸体。

这些都弄的我有些飘渺,梦境里的怪物也开始发芽。

似乎继续写博成了唯一与现实连接的途径。在跟踪旧域名一年以后,我把它找回来了。一切重置,从头再来。新新域名adamjiang.com