zoukankan      html  css  js  c++  java
  • opencv排错总结

    (1) 没有找到 tbb_debug.dll

    http://www.opencv.org.cn/forum/viewtopic.php?p=52223

    在这里面找到了解决办法,里面的哥们太有才,顶一下

    Re: win7,vs2010,opencv2.3,运行程序,报错“计算机丢失tbb_debug.dll”

    由 xxw168 » 2011-12-04 23:28
    我也遇到过。我将\opencv\build\common\tbb\ia32目录下的tbb.dll复制改名为tbb_debug.dll

    搞定!哈哈



    (2) 0x7c812afb 处未处理的异常

    函数中参数类型不对。比如整型数据,传入double型 等



    (3) openCV 中像素值是什么?



    解:http://zhidao.baidu.com/question/337256461.html

    对于彩色图,每个像素点其实是用个数组表示的,我记得是按BGRA的顺序

    像素值,即对应像素的数值对于灰度图像,像素值是该像素点的 亮度值对于彩色图像,像素值由 红 绿 蓝 三个颜色的 幅度值表示 A通常不用



    (4) openCV 帮助文档问题。。

    解:http://www.opencv.org.cn/index.php/Download#chm.E6.A0.BC.E5.BC.8F.E6.96.87.E6.A1.A3

    之前下的ICVL 感觉很不全,好多函数都查不到,其实不然,索引时候有个技巧,比如:cvCalcHist() 函数,如果把全名

    输入则找不到,只搜索CalcHist 就可以找到,有些函数得加cv,这样几乎所有目前学习的函数都能找到了,非常强大。。



    (5) 什么是 HSV

    解:HSV 是颜色模型的一种,H:色调 S:饱和度 V:亮度 HSV的三维表示从RGB 立方体演化而来。


    (6)opencv中mask 的意思,如 cvAdd() 中 dst(I)=src1(I)+src2(I) if mask(I)!=0 

    解:http://blog.csdn.net/moc062066/article/details/6548450

    要知道mask == NULL 和 mask(I) == 0 是两个概念,NULL 代表不存在这个矩阵,0代表这个矩阵为零,如果不存在则忽视mask 完全相加


    (7)用cvReleaseImage() 释放从视频返回图像时出现“helloOpencv.exe 中的 0x7c812afb 处未处理的异常: Microsoft C++ 异常内存位置 0x0011fa20 处的 cv::Exception。”

    解:函数cvQueryFrame从摄像头或者文件中抓取一帧,然后解压并返回这一帧。这个函数仅仅是函数cvGrabFrame和函数cvRetrieveFrame在一起调用的组合。返回的图像不可以被用户释放或者修改。


    (8)cvShowImage() 显示图像为全黑全灰。

    答:用cvShowImage()输出了未进行转换的浮点深度的图像,找了好长时间,在这里找到了答案http://bbs.ednchina.com/BLOG_ARTICLE_2061059.HTM
    在处理一些需要图像相加运算的操作时,通常定义
    IplImage* dst = cvCreateImage(cvGetSize(img),IPL_DEPTH_64F,img->nChannels);
    当处理完成后,需要对原这个IPL_DEPTH_64F深度的图像进行显示的时候,就需要做一些转换。可以用cvScale()这个函数,这个函数主要是对图像做线性变换。如果不转换的话,可以发现显示的图像是全白的。这是由于IPL_DEPTH_64F类型的图片显示范围为[0,1]。
    cvMinMaxLoc(dst, &m, &M, NULL, NULL, NULL);
    cvScale(dst, dst, 1.0/(M-m), 1.0*(-m)/(M-m));//图像数据转换到[0,1]区间
    这个时候就可以正常的显示图像了。当需要在不同深度的图像之间转换时,也可以用cvScale()这个函数。这个时候的转换,中间有个截断处理过程。比如IPL_DEPTH_64F到IPL_DEPTH_8U,就会把300转换到255。下面转一段别人总结的深度显示范围。
    测试double型:0.0--1.0之间 IPL_DEPTH_64F
    测试float型:0.0--1.0之间 IPL_DEPTH_32F
    测试long型:0--65535之间 IPL_DEPTH_32S
    测试short int型:-32768--32767之间 IPL_DEPTH_16S
    测试unsigned short int型:0--65535之间 IPL_DEPTH_16U
    测试char型:-128--127之间 IPL_DEPTH_8S
    测试unsigned char型:0--255之间 IPL_DEPTH_8U
    这个时候如果需要保存图像,请记住要先转换到IPL_DEPTH_8U的深度。因为只有8位单通道或者3通道(通道顺序为'BGR' )才可以使用cvSaveImage保存。


  • 相关阅读:
    Luncence .Net 使用
    Quartz 使用
    asp.net mvc 部分视图加载区别
    C学习笔记-内存管理
    C学习笔记-内存管理
    C学习笔记-结构体
    C学习笔记-结构体
    C学习笔记-指针
    C学习笔记-指针
    dll的封装和使用
  • 原文地址:https://www.cnblogs.com/zcube/p/4196444.html
Copyright © 2011-2022 走看看