我编写了一个程序来计算从捕获的视频中汽车的数量。我在 raspberry pi 2 上安装了 opencv 和 cvblob、raspbian wheezy OS。我面临的问题是“在运行时,程序在一定次数的迭代后挂在 cvLabel 处。
IplImage *labelImg =cvCreateImage(cvGetSize(greyImage), IPL_DEPTH_LABEL, 1);
unsigned int result = cvLabel(greyImage, labelImg,blobs);
但是当我在笔记本电脑上的虚拟机上运行同一个程序时,它可以完全运行。这可能是什么原因造成的?请指教
答案1
我找到了问题的解决方案。以下更改是专门针对 raspberry pi 2(armhf) 所必需的,可避免程序无限运行。
https://code.google.com/p/cvblob/issues/detail?id=23
转到 /home/pi/cvblob/cvBlob
在 cvLabel.h 文件中
const char movesE ... const char movesI ...
到
const signed char movesE ... const signed char movesI ...
在 cvBlob/cvcontour.cpp 中,第 84 行:
改变
const char cvChainCodeMoves[8][2] = { { 0, -1},
到
const signed char cvChainCodeMoves[8][2] = { { 0, -1},