视频或相机中读入的帧数不对,或有空帧

image check from cap or video:

you must check wether each frame is not empty when use VideoCapture. Like :

if(!image.empty())
{}

+0

这个bug你早晚会碰到的

Mat::rowRange  ||  mat::.row      // "+0" !!!
////R(3,:) = cross(R(1,:),R(2,:));
//R_out.rowRange(0, 2) = R.rowRange(0, 2) + 0; // "+0" !!!
//R_out.row(2) = R.row(0).cross(R.row(1)) + 0; // "+0" !!!

Python Open CV perspectiveTransform()

Error: Assertion failed (scn + 1 == m.cols && (depth == CV_32F || depth == CV_64F)) in perspectiveTransform, file /tmp/opencv-PEaA0A/opencv-2.4.9/modules/core/src/matmul.cpp, line 1936

解决

  • 将数据类型转换为np.float32
  • 将第一个参数由两通道转换为3通道

refer1

refer2

相机标定

drawchess的结果的第一列的点为宽度,点的列数为高度

opencv转换视频格式

VideoWriter writer(“object.avi”, CV_FOURCC(‘M’,’P’,’4’,’2’), 20.0, Size(640, 480));

CV_FOURCC(‘M’,’P’,’4’,’2’)设置成这样, 不然生成生.avi转换成的.mp4会有问题

cvAbsDiff

调用opencv中cvAbsDiff提示matrix.cpp:880: error: (-5) Unknown array type in file

查了很久才知道,原来在opencv3.0中的背景差分函数不是cvAbsDiff()

而是 absdiff(backgroundImage, currentImajge, foreground);

opencv版本多而杂乱,而且有C++/C的用法也不一样,千万注意

SurfFeatureDetector

调用SurfFeatureDetector 类提示没有声明,其实是该类声明于opencv2/nonfree/features2d.hpp文件中,而我们默认的声明文件opencv2/features2d.hpp,所以有些非开源免费使用的函数检测不到。解决方法#include <opencv2/nonfree/features2d.hpp>

类似的问题还有,使用BruteForceMatcher<L2> matcher 需要 include <opencv2/legacy/legacy.hpp>

Codeblocks运行opencv导入库

codeblocks运行opencv 参考

提示 undefined reference to symbol '_ZN2cv6imreadERKNS_6StringEi'

解决:文中有一步是把highgui.so opencvcore.so两个库添加到工程,而我们需要把所有含open.so的库都添加进来。

Error: invalid initialization of non-const reference of type ‘cv::Mat &’ from an rvalue of type ‘cv::Mat’

for( )

Cv::Mat &W = m_W.rowRange(2*frm, 2*frm + 2); // error from here!
Modify_W_function( W); // the parameter in function is needed for reference

end

Solution:

cv::Mat W = m_W.rowRange(2*frm, 2*frm + 2);

直观上理解,因为Modify_W_function要修改m_W的其中两行,所以应该返回一个引用类型的值,但是mat::rowRange()的返回值并非引用,所以会报这个错。

解决方法是把返回值赋给一个矩阵,但是直观上看这样再改变W的值并不会对m_W的改变。但是其实mat::rowRange()返回的是一个矩阵头,并不会重新分配内存给W,所以即使不使用引用型的W,那么W与m_w.rowRange()也是指向的是同一块内存。所以可以这么解决问题。

opencv的使用——经典大坑的更多相关文章

  1. OpenCV imread读取jpg图像的一个大坑

    长话短说 版本区间[OpenCV3.0.0, OpenCV3.4.1]内的OpenCV,(至少在windows下,使用官方提供的预编译版本),imread读取jpg图片后的像素值,和版本区间[Open ...

  2. 90年代经典“手游”—拼图板小游戏Opencv实现

    80后可能还对儿时玩过的一种经典木质的拼图板游戏记忆犹新,一般是一种4*4或5*5规格的手持活动板,通过挪动每个小板子的位置,拼出来板子上完整的图像,那时候还没有网吧,手机也还是大哥大的天下,所以这也 ...

  3. Win10 OpenCV3.3.0+VS2013配置大坑,OpenCV解决方案编译报错“找不到python36_d.lib”错误

    今天因为想要用OpenCV做图像识别,小白一个,在网上找到一个教程,但是需要配置OpenCV3.3.0的环境,于是又在网上找OpenCV3.3.0+VS2013(因为我之前已经安过了VS2013),前 ...

  4. 解析opencv中Box Filter的实现并提出进一步加速的方案(源码共享)。

    说明:本文所有算法的涉及到的优化均指在PC上进行的,对于其他构架是否合适未知,请自行试验. Box Filter,最经典的一种领域操作,在无数的场合中都有着广泛的应用,作为一个很基础的函数,其性能的好 ...

  5. OpenCV图像细化的一个例子

    转自:http://blog.csdn.net/zfdxx369/article/details/9091953?utm_source=tuicool 本文是zhang的一篇经典图像细化论文,效果很好 ...

  6. 相机位姿估计1_1:OpenCV:solvePnP二次封装与性能测试

    关键词:OpenCV::solvePnP 文章类型:方法封装.测试 @Author:VShawn(singlex@foxmail.com) @Date:2016-11-27 @Lab: CvLab20 ...

  7. 人脸识别经典算法三:Fisherface(LDA)

    Fisherface是由Ronald Fisher发明的,想必这就是Fisherface名字由来.Fisherface所基于的LDA(Linear Discriminant Analysis,线性判别 ...

  8. opencv 简单模糊和高斯模糊 cvSmooth

    cv::Mat 是C++版OpenCV的新结构. cvSmooth() 是老版 C API. 没有把C接口与C + + 结合. 建议你们也可以花一些时间看一下介绍. 同样,你如果查看opencv/mo ...

  9. OpenCV进阶之路:神经网络识别车牌字符

    1. 关于OpenCV进阶之路 前段时间写过一些关于OpenCV基础知识方面的系列文章,主要内容是面向OpenCV初学者,介绍OpenCV中一些常用的函数的接口和调用方法,相关的内容在OpenCV的手 ...

随机推荐

  1. Matrix.(POJ-2155)(树状数组)

    题目是让每次对一个子矩阵进行翻转(0变1,1变0), 然后有多次询问,询问某个点是0还是1 这题可以用二维的树状数组来解决,考虑传统的树状数组是改变某个点,然后查询某一段, 而这个题是改变某一段,查询 ...

  2. bzoj 1218 [HNOI2003]激光炸弹 二维前缀和

    [HNOI2003]激光炸弹 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3022  Solved: 1382[Submit][Status][Di ...

  3. JQuery源码实现

    技术提高篇--- 推荐--- 动脑学院--- http://www.toutiao.com/a6368703139592569089/

  4. eclipse好玩的插件集(一) CKEditor插件

    啥也不说,先上效果图: 当你输入完图片的url时,你可以得到预览的图像,从而进行宽高调整! 使用方法: 在eclipse市场中搜索ckeditor 配置操作如下:   进行文件关联,这样就可以直接用c ...

  5. 无线局域网中RADIUS协议原理与实现

    转载自:http://blog.csdn.net/jinhill/article/details/5901042 摘要  RADIUS协议是一个被广泛应用于网络认证.授权和计费的协议.本文在介绍了RA ...

  6. 更改本地hosts文件

    在 C:\Windows\System32\drivers\etc 下更改 hosts 文件 127.0.0.1 www.baidu.com 这样访问 www.baidu.com 这个地址,其实是访问 ...

  7. 【BZOJ4837】LRU算法 [模拟]

    LRU算法 Time Limit: 6 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description 小Q同学在学习操作系统中内存管理的 ...

  8. bzoj3671 [Noi2014]随机数生成器

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3671 [题解] 贪心从1...n*m取,开两个5000*5000的数组就够了,可以重复利用, ...

  9. [BZOJ1076][SCOI2008]奖励关解题报告|状压DP

    你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的宝物以后也不能再吃). 宝 ...

  10. 【codevs】3196 黄金宝藏

    [算法]区间DP+博弈论 [题解]其实它都不是博弈题…… 很自然的可以设f[i][j]表示i~j先手可取得的最大价值. 容易得到转移式:f[i][j]=max(a[i]+sum[i+1~j]-f[i+ ...