zoukankan      html  css  js  c++  java
  • opencv-python与c++ opencv中的一些区别和基础的知识

    使用opencv-python一段时间了,因为之前没有大量接触过c++下的opencv,在网上看c++的一些程序想改成python遇到了不少坑,正好在这里总结一下。

    • 1.opencv 中x,y,height, width,rows,cols 的关系(转自http://blog.csdn.net/ikerpeng/article/details/41846259)

        opencv中图像的x,y 坐标以及 height, width,rows,cols 他们的关系经常混淆。

        rows 其实就是行,一行一行也就是y 啦。height高度也就是y啦。

        cols  也就是列,一列一列也就是x啦。width宽度也就是x啦。   

    • 2.补充(以下均为原创):

    1. opencv python中的rows cols分别为img.shape[0](height)和img.shape[1](width)
    2. opencv c++中的图像对象访问像素可使用.at :cv::mat的成员函数: .at(int y, int x),可以用来存取图像中对应坐标为(x,y)的元素坐标。但是在使用它时要注意,在编译期必须要已知图像的数据类型.但在opencv-python中访问像素可直接使用例如img[x][y] 的方法进行实现

      原因:和opencv不同,目前opencv-python中的数组均为numpy array形式。

    • 3.函数上的应用的不同处

      在opencv-python中,有很多函数的应用方法都与opencv中不同,下面简单的分析一下最不同的地方

       1)python中使用cv2.方法名或变量名来调用方法/变量

       2)对于具有同样作用的函数的不同调用方法,例如

    //c++
    cvtColor(srcImg, binaryImg, COLOR_BGR2GRAY);
    #python
    binaryImg = cv2.cvtColor(srcImg,cv2.COLOR_BGR2GRAY)

        当然对于每个具体的函数的具体用法,可以自行上网搜索

       3)python中对于变量的类型是不需要声明的,所以将c++中代码修改为python时需要注意很多(缩进虽然很便于查看,但是还是感觉写{}的感觉很爽233)

       4)python中函数参数可以为array形式,所以c++ opencv中的很多类型都是不存在的,切记使用cv2.类型名()去使用,例如

    //c++
    circle(srcImg, Point(x, y), 3, Scalar(255, 0, 255), 2, 8, 0);
    #python
    cv2.circle(srcImg, (x, y), 3, (255, 100, 255), 1, 8, 0)

       其他的小坑估计还很多,多Google吧。

  • 相关阅读:
    SQL练习题32:请你创建一个actor_name表,并且将actor表中的所有first_name以及last_name导入该表.
    SQL练习题31:对于表actor批量插入如下数据,如果数据已经存在,请忽略(不支持使用replace操作)
    SQL练习题30:对于表actor批量插入如下数据(不能有2条insert语句哦!)
    npm run dev 报错:missing script:dev
    [转]vue中“:”、“.”、“@”的意义
    Vue踩坑记录
    Vue指令:v-clock解决页面闪烁问题
    npm-安装模块时出现rollbackFailedOptional
    js中[]、{}、()的区别
    IDEA离线安装插件
  • 原文地址:https://www.cnblogs.com/take-fetter/p/8453715.html
Copyright © 2011-2022 走看看