zoukankan      html  css  js  c++  java
  • 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]
    ", &a[i], &b[i]) != EOF){
    
        //读入文件,并找到位置最低的点
        for (int i = 0; i<pointnum;i++){
            scanf("[%lf, %lf]
    ", &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

  • 相关阅读:
    [Luogu P3626] [APIO2009] 会议中心
    杭电 1869 六度分离 (求每两个节点间的距离)
    杭电 1874 畅通工程续 (求某节点到某节点的最短路径)
    最短路径模板
    杭电 2544 最短路径
    POJ 1287 Networking (最小生成树模板题)
    NYOJ 1875 畅通工程再续 (无节点间距离求最小生成树)
    POJ 2485 Highways (求最小生成树中最大的边)
    杭电 1233 还是畅通工程 (最小生成树)
    杭电 1863 畅通工程 (最小生成树)
  • 原文地址:https://www.cnblogs.com/zealousness/p/9380380.html
Copyright © 2011-2022 走看看