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

  • 相关阅读:
    R绘图 第七篇:绘制条形图(ggplot2)
    R实战 第11篇:处理缺失值
    R实战 第十篇:列联表和频数表
    贝叶斯概率
    分析思维 第三篇:数据分析的三板斧
    分析思维 第二篇:数据指标体系
    分析思维 第一篇:认识数据
    R数据挖掘 第三篇:聚类的评估(簇数确定和轮廓系数)和可视化
    R数据挖掘 第二篇:基于距离评估数据的相似性和相异性
    R数据挖掘 第一篇:聚类分析(划分)
  • 原文地址:https://www.cnblogs.com/zealousness/p/9380380.html
Copyright © 2011-2022 走看看