zedboard+opencv+QT+车牌识别进度情况记录


export LD_LIBRARY_PATH=/usr/local/lib  (这个路径按实际情况来)

不管挂载在哪里都 只要设置环境变量~~~~~~     LD_LIBRARY_PATH不知道这个是什么  居然能这样哈!~~~~





http://xilinx.eetrend.com/blog/6755Zedboard--Opencv移植和Zedboard测试(十一)

参考了这个



/2015--3--20确认完成 rainsky的(四)和(五)



【OpenHW12】rainysky陪你一起在zedboard上移植qt+opencv(六):在zedboard上运行Opencv

和在pc机上一样,建立 文件夹/opt/zedboard/opencv_zed,复制文件进来,解压缩:建立两个文件夹 build install,如下图 
我是在/opt/zedboard/opencv_zed/OpenCV-2.4.3 大写O  里面建立了 build install  而不是小写的o


在这里和pc不太一样了,需要设置编译环境,在opencv-2.4.4下面新建一个文件,文件名为toolchain.cmake,里面的内容为:
我是在/opt/zedboard/opencv_zed/OpenCV-2.4.3  里面建立了这个文件  (大写O)


新建一个专门写程序的文件夹 mkdir /opt/zedboard/opencv_zed/code

这里我有个程序"1234"  为了zed+opencv+qt +显示图片



配置完成后就输入make开始编译,编译完成后就是make install安装啦。安装完成后在install的文件夹里就是运行库啦。

这句话的意思是 在build里面 make make install  (我有没有这么做 记不得了... )

/opt/zedboard/opencv_zed/opencv-2.4.3/install/bin  确认在这里(小写o啊!!!) 里面的 bin文件夹里面 都是 arm架构的 文件!!!!!



/opt/zedboard/opencv_zed/opencv-2.4.3/build  这里面什么都没有!!  因为build 我实际建在了 大写O里面!!!

/opt/zedboard/opencv_zed/opencv-2.4.3/install 这里里面 应该就是 我运行ZED时候要挂载opencv镜像的目录!!!!!

不对 是要挂载在/usr/local/????



注释:我在PC上linux上 opencv要用的运行库 是在 /usr/local/里面  其中的 bin文件夹里面都是X86架构的文件!!!!





arm-xilinx-linux-gnueabi-g++  -I /opt/zedboard/opencv_zed/opencv-2.4.4/install/include  -I/opt/zedboard/opencv_zed/opencv-2.4.4/install/include/opencv -L/opt/zedboard/opencv_zed/opencv-2.4.4/install/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann ./edge_detection.cpp -o ./edge_detection.o


我用opencv2  rainsky用opencv1  所以我得加2    -I/opt/zedboard/opencv_zed/opencv-2.4.4/install/include/opencv  在opencv后面加2

-I (就是include的意思)和 -L(就是链接库的意思)我后面都跟了空格  他没有空格!! 

链接库正确吗???



-lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann

这段代码  应该是opencv1时代的 这时候 应该不能用  ???????这些都表示什么含义呢????????


先试试!!!!



甚至不用显示 直接在zed上做图片变换 再保存 在到电脑上看效果!!!

这才是正确的实录啊!!!!




OpenCV Error: Unspecified error (The function is not implemented. Rebuild the library with Window2
terminate called after throwing an instance of 'cv::Exception'                                    
  what():  /opt/zedboard/opencv_zed/OpenCV-2.4.3/modules/highgui/s

现在报错这个!!!!!


下面的图片解释: 挂载opencv就是挂载opencv的动态链接库  就是.so文件

zedboard+opencv+QT+车牌识别进度情况记录_第1张图片

我试试看不加显示  直接opencv处理保存图片  这才是正确的思路

不能用imshow函数  因为这个函数在电脑上用是调用了底层的东西

zed上没有啊

我说怎么网上都是处理图片  再保存的  例子

原来是这样!!!


export LD_LIBRARY_PATH=/usr/local/lib  (这个路径按实际情况来)

不管挂载在哪里都 只要设置环境变量~~~~~~     LD_LIBRARY_PATH不知道这个是什么  居然能这样哈!~~~~



接着来吧

交叉编译上次做好的  彩图转化灰度的程序

记得要修改图片路径 和图片名称~~~~~~~~

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

using namespace cv;

int main(int argc, char *argv[])
{


    Mat src = imread( "/mnt/peng_jerry.jpg" );
    Mat result;

        cvtColor(src,result,CV_BGR2GRAY);

        imwrite("/mnt/peng_jerry_gray.jpg",result);


}



下图说明我 把opencv安装了两遍  囧----!~~~~

zedboard+opencv+QT+车牌识别进度情况记录_第2张图片



下图是我在交叉编译彩转灰程序


下面这个命令是正常可用的  命令解释 第一啊 /opt/zedboard/opencv_zed/opencv-2.4.3/install/include/  是我安装opencv的其一一个地方

第二啊 opencv2 应该是-I 用  ....2.4.3/install/include/opencv2 我是这样理解的

第三 -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann 这个我也不知道是啥????? 



arm-xilinx-linux-gnueabi-g++ -I /opt/zedboard/opencv_zed/opencv-2.4.3/install/include/ -I /opt/zedboard/opencv_zed/opencv-2.4.3/install/include/opencv2 -L /opt/zedboard/opencv_zed/opencv-2.4.3/install/lib/  -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann ./test_zed_opencv_gray.cpp -o ./test_zed_opencv_gray.o


zedboard+opencv+QT+车牌识别进度情况记录_第3张图片



运行时  报错!!!

OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cvtColor, file /opt/zedboard/opencv_zed/OpenCV-2.4.3/modules/imgproc/src/color.cpp, li6
terminate called after throwing an instance of 'cv::Exception'


OpenCV Error:Assertion failed (scn ==3 || scn==4) in unknown function[

http://bbs.csdn.net/topics/390944170  这片说的很道理    我的情况就是  不能读取jpg  当然我整了半天  才知道的


opencv android 图像处理错误error: (-215) scn == 3 || scn == 4 in function void cv::cvtColor(const

http://www.07net01.com/2014/09/174239.html

参考这个!!


第一解决思路

原因是你没有给你自己的Mat rgbMat = new Mat();

分配大小导致的。 


可是如果是内存问题那我在电脑上没问题啊!!!?????

后再来证明这个想法也不对!!


第二解决思路 这个想法完全不对   因为前后的图像通道都不一样!!!!


真实原因来啦!! 

实际上不支持 jpg格式的图像

imread 和  imwrite 都不能用这个格式!!!!!!


改成了bmp格式  立马好啦!!!@!


最后的程序

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <stdio.h>

using namespace cv;

int main(int argc, char *argv[])
{


//    Mat src = imread( "/mnt/peng_jerry.jpg" );
        Mat src(640,480,CV_8UC3,Scalar(120,120,140));
    printf("cols = %d\n",src.cols);
//      if(src == 0){
//       printf( "Unable to load the image\n" );        
//      return -1;
  //     }
//    Mat result;
        Mat dst(src.size(),CV_8UC1);
        cvtColor(src,dst,CV_BGR2GRAY);

        imwrite("/mnt/peng_jerry_gray.bmp",dst);

return 0;

自己做一个彩图   然后灰度化!!

如果是imwrite用jpg格式 会在PC上没事  在ZED上不行!!!

因为我之前做的的opencv镜像不支持jpg格式


你可能感兴趣的:(zedboard+opencv+QT+车牌识别进度情况记录)