OpenCV遇到的坑

1. cv::imshow

在使用cv::imshow输出图像时,会将图像数据映射到[0,255]之间;所以对于:

  • 图像类型为CV_8U时,正常输出图像,因为此类型数据范围为[0,255];
  • 图像类型为CV_16U或CV_32S时,图像数据会除以255.0,最终映射到所需要的[0,255] ;
  • 图像类型为CV_32F或CV_64F时,图像数据会乘上255.0,最终映射到所需要的[0,255] ;
    对于后两种,在cv::imshow前需要做归一化;例如一副图像类型为CV_32F,那么需要将它归一化到[0,1],这样最后显示结果才是正常的;假设不做normalize,图像中大于1的数据会乘上255再显示,这样的显示出的结果一定是白色的,就无法体现图像本身。

2、Mat赋值

Mat赋值时,注意类型;灰度图为例子,比如图像类型为CV_8UC1,那么赋值时,应该写为mat.at< uchar >(i, j);类型为CV_32SC1时,应该写成mat.at< int >(i, j);类型为CV_32FC1时,应该写成mat.at< float >(i, j);

3、cv::calchist

  • bins为需分类数量;
  • range[]为图像像素范围;
  • 得到的结果图hist为每个bin的统计总数。

4、opencv 使用分类器时需注意的问题

  • 训练的数据data为CV_32F类型,输入数据时,注意查看data具体的值,避免出现超出范围的值,导致训练后,输出结果每次都不同,或者会出现这种错误:Assertion failed (sv_count != 0) in cv::ml::SVMImpl::do_train;
  • 标签数据为CV_32S类型,训练器只能输入这个类型的responses。
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值