关闭

11.19 生活就像巧克力,你永远不知道下一颗的口味

84人阅读 评论(0) 收藏 举报

    最近在研究一个手势识别的程序,程序的第一步是肤色检测,由于我所研究的代码定义的图像的类型是IplImage类型,而我更喜欢使用Mat类型,所以我决定自己写一个肤色检测的程序,用Mat类型的图像。然而就是这样一个简单的肤色检测的程序,我写了将近两天。今天研究了很长时间,发现一些函数的形参类型都是Mat类型,在各种报错之后,我原本准备放弃。然而一不小心搜到了一个能形参是mat类型的可以分割多通道图像的函数,于是又开始写了起来,可是写着写着我发现我连打开摄像头的程序都调不出来了。找到各种资料对比之后,我才终于调通了打开摄像头的图像。这虽然是一个很小很小的程序,但是今天下午我还是发现了一些问题,积累了一些经验。现在记录下来。


1.在遇到形参与实参类型不匹配时,要想到强制类型转换。比如今天遇到的 CvArr*类型转换成Mat 类型需要用  Mat image; CvArr * s=(Cvarr *)ℑ

2.一些作用相同,但是形参类型不同的函数:

                                                       Mat                                 IplImage

图像的初始化                    M.create(size,type);               M= cvCreateImage(size,Depth,channals);

多通道图像的分离           split(src,vector<Mat>)          cvSplit(img_YCrCb,Y_channel,Cr_channel,Cb_channel,0);(原图,各个通道的图像)

                                         (其中vector中盛放着各个通道的图像,可以用遍历的方法(at函数)来读取各个通道的图像)


3.如果出现摄像头打不开等问题,可能是没写waitkey(),或者waitkey()写的出问题。


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:157次
    • 积分:20
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档