日记5----OpenCV专用

Posted on 2020-05-27 22:56  金色的省略号  阅读(152)  评论(0编辑  收藏  举报

   别想一下子学会,知识日积月累;耐得住寂寞,坚持下去,目标一定会实现

 

  确定一个学习目标:深入学习OpenCV

  确定一个短期学习目标:实现数字识别

  确定一个学习的方法:培养学习兴趣,解决遇到的所有困难,抓住要点

 

1、picture含盖了image和photo,也就是指一切图片,范围很广;image指肖像、形象;photo指用相机照出来的照片;

2、OpenCV 模块,有主要功能模块及附加功能模块;

3、_pFirstBlock==pHead 错误的解决方法,确认VS工程属性中,opencv的链接库路径和版本正确;VS2013应该使用vc12目录,VS2012对应vc11目录;debug版和release版要区分;VS工程的运行库参数应该使用"/MDd";系统环境变量Path中,opencv的目录和VS工程设置的路径 应该一致。

4、为什么使用cmakecmake下载  cmake错误

5、浮点常数,默认为double类型,后面加f表示float类型浮点常数!

6、float的尾数位是23bit,对应7~8位十进制数,所以有效数字有的编译器是7位,也有的是8位,一个数据的7位的有效数字就是从数据中的第一位不是0的数字开始,到之后的7位数; float:1bit(符号位) 8bits(指数位) 23bits(尾数位);精度是由尾数的位数来决定的,float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字

7、利用.ptr遍历图像像素

#include <opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
    /*Mat m(2, 2, CV_8UC3, Scalar(0, 0, 255));
    std::cout << m << std::endl;*/
    
    Mat srcImage;
    srcImage = imread("d://1.png");

    int height = srcImage.rows;
    int width = srcImage.cols * srcImage.channels();
    for (int j = 0; j<height; ++j){
        uchar* data = srcImage.ptr<uchar>(j);//利用指针.ptr遍历图像像素
        for (int i = 0; i<width; ++i){
            data[i] /= 2;
        }
    }

    cout << srcImage.channels();

    imshow("显示图像", srcImage);waitKey();
    
    system("pause");
    return 0;
}
View Code

8、通道与深度,通道表示每个点能存放多少个数,类似于RGB彩色图中的每个像素点有三个值,即三通道的,图片中的深度表示每个值由多少位来存储,是一个精度问题,一般图片是8bit(位)的,则深度是8