ビルドとテストにOpenCV3エントリ-1-環境

1 、構築された環境

1.1 VS2017 ビルドに開発環境

1)パッケージをダウンロードします

https://opencv.org/

 

2)、環境変数を設定します

win10システム環境変数の設定、パスに次のパスを追加します。

D:\ WORK \ 5.OpenCV \ OpenCVの\ビルド\ x64の\ vc15 \ binに

3)、対属性の設定

 

設定は、パスが含まれています

D:\ WORKは\ 5.OpenCV \ OpenCVの\ビルド\ \ OpenCVのを含めます

D:\ WORK \ 5.OpenCV \ OpenCVの\ビルド\含ま\ opencv2

構成リポジトリディレクトリ

D:\ WORK \ 5.OpenCV \ OpenCVの\ビルド\ x64の\ vc15 \ libに

追加項目によってリンカ入力抵抗を設定します

opencv_world343d.lib(在D:\ WORK \ 5.OpenCV \ OpenCVの\ビルド\ x64の\ vc15 \ libの下)

1.2のpython3のビルドに環境

Pythonの開発環境のインストールは、オンラインで多くの例は、基本的にはOpenCVの-Pythonができ、インストールPIP、と言うことではない、比較的簡単です。

2 、画像操作- 読み取り、書き込み、表示

例:1:読み取り画像

書式#include <opencv2 / opencv.hpp> 
の#include <iostreamの>
 使用して 名前空間をSTD。
使用して 名前空間の品種;

INT メイン(){
    マットPIC1 =関数imread(" D:/WORK/5.OpenCV/LeanOpenCV/pic_src/pic1.bmp " )。
    namedWindow(" PIC1 " );
    関数imshow(" PIC1 " 、PIC1)。
    waitKey(0 )。
}

 

例2:書き込みイメージ

書式#include <opencv2 / opencv.hpp> 
の#include <iostreamの>
 使用して 名前空間をSTD。
使用して 名前空間の品種;

INT メイン(){
    マットマット =マット(300500 、CV_8UC1)。
    COUT << " 行= " << mat.rows << "COLS = " << mat.cols << ENDL。
    以下のためにint型私は= 0 ; I <mat.rowsを; I ++ 
    {
        UCHAR *行= mat.ptr <UCHAR> (I)。
        以下のためのint型 J = 0 ; jの<mat.colsあり、j ++ 
        {
            行[J] =(UCHAR)((J / 20)* 10 )。
        }
    }

    関数imshow(" PIC1 " 、マット);
    関数imwrite(" D:/WORK/5.OpenCV/LeanOpenCV/pic_src/mat.bmp " 、マット)。
    waitKey(0 )。
}

3 、機能解析

マットには、3つの重要な方法があります。

= IMREAD MAT MAT(CONST文字列のファイル名*、int型フラグ)、読み取った画像
関数imshow(CONST  文字列winName、InputArray MAT)と、表示画像
関数imwrite(CONST  文字列ファイル名、InputArray IMG)、画像を記憶します
1)関数imread
マット関数imread(CONST文字列&名、INTフラグ= IMREAD_COLOR)
 列挙{
    IMREAD_UNCHANGED = -1, // 8 位,彩色或非彩色
    IMREAD_GRAYSCALE = 0, // 8 位,灰度
    IMREAD_COLOR = 1,    //未改变深度、颜色
    IMREAD_ANYDEPTH = 2, //任意深度,未改变颜色
    IMREAD_ANYCOLOR = 4, //未改变深度,任意颜色
    IMREAD_LOAD_GDAL = 8 // 使用 gdaL 驱动程序
};

因为flags是int型的,如果不在上面的枚举中取值,则可以这样进行。

flags>0:返回3个通道的彩色图像

flags=0:返回灰度图像

flags<0:返回包含Alpha通道的加载的图像

注意,如果使用彩色模式输入图像,解码后顺序是BGR,而不是通常的RGB。

 2) imshow和namedWindow

imshow函数前没有namedWindow函数则自动执行一个,但是该函数默认创建窗口的参数为cv2.WINDOW_AUTOSIZE,窗口大小会自动适应所显示的图像,并且不能改变窗口的大小。

cv2.namedWindow("demo" , cv2.WINDOW_NORMAL)                             
cv2.imshow("demo" , img)

这样生成的窗口时可以调整大小的,通过改变参数可以得到不同功能的窗口.

窗口大小可以改变    cv2.WINDOW_NORMAL

窗口大小不可以改变  cv2.WINDOW_AUTOSIZE

窗口大小自适应比列  cv2.WINDOW_FREERATIO

窗口大小保持比例    cv2.WINDOW_KEEPRATIO

显示色彩变成暗色    cv2.WINDOW_GUI_EXPANDED

3) imwrite

CV_EXPORTS_W bool imwrite( const String& filename, InputArray img,

const std::vector<int>& params = std::vector<int>());

第一个参数const String& filename表示需要写入的文件名,必须要加上后缀。

第二个参数InputArray img表示Mat类型数据。

第三个参数const std::vector& params表示为特定格式保存的参数编码,它有一个默认值std::vector< int >(),一般情况下不用写。

•对于JPEG格式的图片,这个参数表示从0-100的图片质量(CV_IMWRITE_JPEG_QUALITY),默认值是95.

•对于PNG格式的图片,这个参数表示压缩级别(CV_IMWRITE_PNG_COMPRESSION)从0-9.较高的值意味着更小的尺寸和更长的压缩时间而默认值是3.

•对于PPM,PGM或PBM格式的图片,这个参数表示一个二进制格式标志(CV_IMWRITE_PXM_BINARY),取值为0或1,而默认值为1.

vector<int> compression_params;
compression_params.push_back(CV_IMWRITE_JPEG_QUALITY);  compression_params.push_back(100); //图片质量
imwrite("test2.jpg", img, compression_params);

 

4、遇到的问题

opencv 一个namedWindow,imshow出现两个窗口问题

链接器-输入-附加依赖项,opencv_worldXXX.lib和opencv_worldXXXd.lib,只需要配置一个就好了。

 

5、参考文献

1、《OpenCV3 编程入门》 , 电子工业出版社,毛星雨著

 

 尊重原创技术文章,转载请注明。

https://www.cnblogs.com/pingwen/p/12292630.html

おすすめ

転載: www.cnblogs.com/pingwen/p/12292630.html