VS2022+OpenCV4.6.0+MFCの環境構成

1. 環境のインストール

        OpenCV:リリース - OpenCV https://opencv.org/releases/         VS2022: Visual Studio: ソフトウェア開発者および Teams 用の IDE およびコード エディターVisual Studio 開発ツールとサービスを使用すると、開発者はあらゆるプラットフォームと言語でアプリケーションを開発できます。無料のコード エディターまたは IDE を使用して、いつでもどこでも開発できます。https://visualstudio.microsoft.com/zh-hans/?rr=https://www.microsoft.com/zh-cn/        インストールについては、関連するインストール チュートリアルを確認してください。

2.OpenCVのインストール

        OpenCVをインストールし、固定アドレスに保存しますが、私はパスの設定を容易にし、誤って削除することを防ぐために、通常はCドライブにインストールします。以降のアップグレードで上書きされないように、インストール中にバージョンをマークします。

   

3. 環境変数

        OpenCV がインストールされている場所をコンピューターに伝えます。「マイコンピュータ」を右クリック→「プロパティ」→「システムの詳細設定」→「環境変数」→「パス」パスの下に次のパスを追加します。

         C:\opencv4.6.0\opencv\build\x64\vc15\bin

ここではCドライブにインストールされていますので、実際のインストールパスに合わせてbinファイルを追加してください。追加が完了したら、「OK」をクリックして環境設定を終了します。

 

 4. VS2022 インクルード パス

       VS2022 New MFC 基本ダイアログを起動し、メニューバーの[プロジェクト]→[プロパティ]をクリックし、プロジェクトを設定します。

        1.VC++ ディレクトリ:

                インクルードディレクトリ: C:\opencv4.6.0\opencv\build\include;

                                 C:\opencv4.6.0\opencv\build\include\opencv2;

                ライブラリディレクトリ: C:\opencv4.6.0\opencv\build\x64\vc15\lib;

        2. コネクタ -> 入力:

                追加の依存関係: opencv_world460d.lib;opencv_world460.lib;

                注: opencv_world460d.lib; はデバッグ モードで呼び出され、opencv_world460.lib; はリリース モードで呼び出され、ここではデバッグ モードとして設定されているため、opencv_world460d.lib; のみが設定されます。

 5. MFC で画像を開きます

        1. 基本ダイアログ ボックスにピクチャ基本コントロールを追加し、属性 ID を IDC_picWND に変更します。

        2. ヘッダー ファイルと名前空間を追加する         

#include<opencv2/opencv.hpp>             // OpenCV头文件
#include<opencv2/highgui/highgui_c.h>    // OpenCV_GUI头文件

using namespace cv;
using namespace std;

        3. ヘッダー ファイルで CRect 変数 m_picRect を定義し、xxDlg::OnInitDialog() にコードを追加します。

Dlg::OnInitDialog()
{
    ****
    // TODO: 在此添加额外的初始化代码
	SetWindowText(L"testOpenCV");	// 设置窗口名
	cv::namedWindow("picView", WINDOW_AUTOSIZE);	// 设置窗口名
	HWND hWnd = (HWND)cvGetWindowHandle("picView");	// 获取窗口句柄
	HWND hParent = ::GetParent(hWnd);				// 指定子窗口的父窗口句柄
	::SetParent(hWnd, GetDlgItem(IDC_picWND)->m_hWnd);
	::ShowWindow(hParent, SW_HIDE);

	CWnd* pWnd = GetDlgItem(IDC_picWND);
	pWnd->GetClientRect(&m_picRect);		// 获取图片控件大小
    
    return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

        4. 「OK」ボタンコントロールをダブルクリックし、画像読み取りおよび表示コードを追加します。

void CopencvtestDlg::OnBnClickedOk()
{
	// TODO: 在此添加控件通知处理程序代码
	
	Mat src = imread("山水.png");
	if (src.empty())
	{
		AfxMessageBox(L"读取图片失败!");
		return;
	}
	cv::resize(src, src, cv::Size(m_picRect.Width(), m_picRect.Height()));
	imshow("picView", src);
	waitKey(0);

	CDialogEx::OnOK();
}

6. 運用効果

 注: 初期化の実行中、CV ウィンドウの作成がフラッシュされます。初期化が完了すると、後の解像度のためにピクチャ空間に影が残ります。これは主に環境構成のテスト用です。

 

 

 

おすすめ

転載: blog.csdn.net/cc891/article/details/128292456