VS c++ opencv畫圖


 

任務:用c++在圖片上畫線

之前用過python的opencv,所以直接想到了用c++的opencv來畫線。

但關鍵就是VS中如何配置c++ opencv庫的問題:

 vs中opencv庫的配置:https://www.cnblogs.com/linshuhe/p/5764394.html

 

1、創建工程:

可以創建控制台工程也可以創建空工程。

 

 

2、打開解決方案資源管理器和屬性管理器

 打開解決方案資源管理器:視圖>>解決方案資源管理器

打開屬性管理器:視圖>>其他窗口>>屬性管理器

 

3、創建c++文件

 解決方案資源管理器中 source目錄右鍵>>添加>>新建項

 

4、配置平台為x64

我的機器是64位的,應該用x64,而VS默認是win32,所以需要先修改一下平台:

debug>>配置管理器

 活動解決方案平台>>如果有x64就選擇x64,如果沒有則選擇新建,新建一個x64

 

5、配置屬性管理器

配置平台為x64之后,就可以看到屬性管理器里面多了debug|x64和release|x64兩個文件夾

 

調試的時候配置debug|x64文件夾就好

右鍵>>屬性

需要配置的一般有以下幾個地方:

(1)include目錄:

 

(2)lib目錄:

 

這里注意,如果VS為2013版本的話,則應該使用vc12目錄里的lib;如果VS為2015版本的話,則應該使用vc14目錄里的lib,總之lib的版本不能高於VS的版本,否則會出錯

我的VS是2013的,一開始下載了opencv-3.3.0-vc14的安裝包,導致安裝完成后沒有vc12文件夾,強行用vc14則vs2013各種報錯。於是重裝了opencv-3.1.0解決了問題。

 

(3) 鏈接器input,把所用到的庫文件的文件名考進去(注意不是路徑名),盡量多考

 

 

 (4)編譯器的運行庫(動態還是靜態)。例如我寫opencv的時候就必須用MTD,默認MDD就會出錯

VS運行時庫 MT MTD MD MDD區別:

https://www.cnblogs.com/ShaneZhang/p/3480502.html

 

 (5)有時例如如果用到freopen函數,VS會報錯說freopen函數危險不能用,如果非要用,也可以在這里配置一下

項目 =》屬性 =》c/c++  =》預處理器=》點擊預處理器定義,編輯,加入_CRT_SECURE_NO_WARNINGS,即可。

freopen函數不安全錯誤:https://blog.csdn.net/zhangyuehuan/article/details/12012635

c++讀取文件freopen:https://blog.csdn.net/jacky_chenjp/article/details/70237418

 

 

6、寫程序:opencv畫直線

#include <iostream> 
#include <stdio.h>
#include <opencv2/core/core.hpp>  
#include <opencv2/highgui/highgui.hpp>  
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;

int main(){
    // 讀入圖片
    Mat img = imread("pic.png");

    //配置點數 默認4個
    const int pointnum = 4;

    double a[pointnum];
    double b[pointnum];
    double max = 0;
    int maxindex = 0;

    //顏色集合
    int scalar_cur = 0;
    Scalar color[3] = {Scalar(255,0,0),Scalar(0,255,0),Scalar(0,0,255)};


    //打開文件
    freopen("E:\\programs\\c++\\Drawpic\\Drawpic\\pos", "r", stdin);
    //while (scanf("[%lf, %lf]\n", &a[i], &b[i]) != EOF){

    //讀入文件,並找到位置最低的點
    for (int i = 0; i<pointnum;i++){
        scanf("[%lf, %lf]\n", &a[i], &b[i]);
        if (b[i] > max){
            max = b[i];
            maxindex = i;
        }
    }

    //畫線
    for (int i = 0; i < pointnum; i++){
        if (i == maxindex){
            continue;
        }
        line(img, Point(a[maxindex], b[maxindex]), Point(a[i], b[i]), color[scalar_cur],3);
        //三種顏色循環使用
        scalar_cur = (scalar_cur + 1) % 3;
    }

    imshow("face",img);

    // 等待60000 ms后窗口自動關閉
    waitKey(60000);
}

opencv繪制直線:https://blog.csdn.net/weixin_36340947/article/details/77095924

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM