1.  显示窗口大小的改变方法不同。

在c版本中,定义一个窗口时用cvNamedWindow.

比如说cvNamedWindow(“src”,0);后面的参数为0表示窗口大小可以手动改变,否则窗口的大小是自适应图片大小的。

而在c++版本中定义一个窗口用namedWindow.

比如说namedWindow(“src”,1);不管后面第二个参数是多少,都不能手动更改窗口的大小,因为它的尺寸是根据图片大小自动生成的。

并且要看到手动调整窗口大小的效果,还需要配合cvShowImage(“src”,img);

也就是说如果后面显示用c++版本的imshow(“src”,img);也是看不到手动调整图片大小的效果的。

2.  显示图片的函数不同。

在OpenCV的c版本中,显示图片用cvShowImage;

比如说,cvShowImage(“src”,img);

并且这里的img是IplImage*类型,所以如果你定义的img是Mat类型的话就用不了,因为程序不能自动将Mat类型转换成IplImage*类型。

在opencv的c++版本中,显示图片用的是imshow;

比如说,imshow(“src”,img);

当然这里的img就是Mat类型了。也就是说如果这里的img用IplImage*就不行了,程序不能自动将IplImage*转换成Mat类型。

通过上面2点应该注意到,如果要手动改变图片的尺寸,就必须cvNamedWidow(“src”,0);

cvShowImage(“src”,img)一起用。其中img是IplImage*类型。

当然cvNamedWindow(“src”,0)也可以和imshow(“src”,img)一起用,其中img是Mat类型,但是这样达不到自动改变窗口大小的目的。

因为一般情况下,namedWindow(“src”,1)和imshow(“src”,img)一起用的。

1. 下面来看看IplImage结构体内部:

int nSize

int ID

int nChannels

int alphaChannel

int depth

char colorModel [4]

char channelSeq [4]

int dataOrder

int origin

int align

int width

int height

struct _IplROI * roi

struct _IplImage * maskROI

void * imageId

struct _IplTileInfo * tileInfo

int imageSize

char * imageData

int widthStep

int BorderMode [4]

int BorderConst [4]

char * imageDataOrigin

而Mat结构体包含一个Mat头部(头部中记录的是矩阵的大小,存储方式等等)和一个指向矩阵的指针。所以2者还是有很大区别的,所以说程序不能自动将他们转换是有原因的,因为Mat结构更加复杂。
3. 读取图片的方式不同。

在c版本中读取图片用的是cvLoadImage;

比如说cvLoadImage(“lena.jpg”);

在c++版本中,读取图片用的是imread;

比如说imread(“lena.jpg”);

当然这2种的lena图片都是放入工程目录下的。

但是这里有一点非常不同的是,cvLoadImage()中的参数为const char*类型,而imread()中的参数是const &string型,这两种是完全不同的,在opencv中也不能自动转换好他们,混合使用c和c++函数一起编写opencv代码时要小心。

4. 路径表示方式不同。

在c版本中路径之间用2个双右斜线,即”\\”。用1个斜线”\”会报错。

在c++版本中路径之间用1个或者2个甚至更多个斜线都是可以的。
---------------------  
作者:代码里的文学  
来源:CSDN  
原文:https://blog.csdn.net/qq_34622997/article/details/74549977  
版权声明:本文为博主原创文章,转载请附上博文链接!

cvNamedWindow与namedWindow,cvShowImage与inshow的区别相关推荐

  1. opencv图像处理总结

    opencv图像处理基本操作 1. 矩阵数据类型 通用矩阵数据类型: CV_<bit_depth>(S|U|F)C<number_of_channels> 其中,S表示带符号整 ...

  2. opencv形状识别学习总结

    OpenCV基元检测 Primitive Detection 目录 基元的概念 基元泛指图像中有特点的单元.常说的基元有:边缘.角点.斑点.直线段.圆.等 基元检测是图像分析的基础 边缘(Edge)检 ...

  3. opencv视频处理和检测学习总结

    基于opencv的视频处理--基础数据结构 在一个封装的还算比较好的库中,一般都不会直接采用那些基本的数据结构像char, int 之类,一是 不具有可读性,二是不方便修改移植.通常是通过typede ...

  4. OpenCV+python:Canny边缘检测算法

    1,边缘处理 图像边缘信息主要集中在高频段,通常说图像锐化或检测边缘,实质就是高频滤波.我们知道微分运算是求信号的变化率,具有加强高频分量的作用. 在空域运算中来说,对图像的锐化就是计算微分.由于数字 ...

  5. OpenCV_颜色直方图的计算、显示、处理、对比及反向投影

    首先介绍一下直方图 一.用带权重的样本统计直方图 直方图Histogram,是一种常见的概率分布的非参数(区别于高斯分布,泊松分布等用参数表达概率密度的方法)表达方法.直方图可以看成概率密度分布的离散 ...

  6. OpenCv中实现了三种立体匹配算法:

    OpenCv中实现了三种立体匹配算法: BM算法 SGBM算法 Stereo Processing by Semiglobal Matching and Mutual Information GC算法 ...

  7. It's OpenCV

    OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉库. OpenCV可用于开发实时的图像处理.计算机视觉以及模式识别程序,且授权可以在 ...

  8. findContours函数

    1.findContours函数 函数的作用: 查找图像的轮廓 2.findContours函数,这个函数的原型为: void findContours(InputOutputArray image, ...

  9. opencv图像处理常用完整示例代码总结

    显示图像 #include "StdAfx.h" #include <string> #include <iostream> #include <op ...

最新文章

  1. 搭建yum仓库定制rpm包
  2. android GLES20 color
  3. ProtoBuffer由.proto文件生成.cc/.h
  4. opengl中gpu与cpu交互_OpenGL 环境配置与教程推荐
  5. 用户自定义类型(User-defined Type)参数的传递
  6. IIS7 应用程序池自动回收关闭的解决方案
  7. 报线上python课程靠谱吗-Python培训线上和线下有什么区别?
  8. 【Python】Python3.9又更新了:dict内置新功能,正式版十月见面
  9. 华为手机解锁码快速申请方式
  10. 201871010114-李岩松《面向对象程序设计(java)》第一周学习总结
  11. Postman:脚本应用_pm对象
  12. 大数据时代的 10 个重大变化
  13. 回溯法——利用解空间树解决0-1背包问题
  14. golang模拟抢票
  15. 谷歌浏览器好用的复制粘贴插件_好用到炸的谷歌chrome浏览器必备扩展插件(一)...
  16. 基于Web的在线教师备课系统毕业设计
  17. 一篇最通俗易懂的https
  18. 沐风微信营销水库模型二:建设专属秘密武器库!
  19. 那些曾经大名鼎鼎的黑客,现在怎么样了?(第一集)
  20. 《悲惨世界》--[法]雨果

热门文章

  1. boost::random模块生成随机 8 个字符密码相关的测试程序
  2. boost::outcome模块coroutine_support相关的测试程序
  3. Boost.MultiIndex 使用随机访问索引的示例
  4. boost::math模块使用指定宽度的浮点 typedef估中等复杂的数学函数的测试程序
  5. boost::geometry::model::d3::point_xyz用法的测试程序
  6. boost::fusion::as_deque用法的测试程序
  7. GDCM:gdcm::VM的测试程序
  8. GDCM:ReadCanRead的测试程序
  9. VTK:可视化算法之ExponentialCosine
  10. VTK:Shaders之MarbleShader