OpenCV简单画点方法

opencv中的绘图函数里面有画线画矩形画圆的函数,但是居然没有画点的函数。

在网上查了一下很多人都是用line或者circle来画点,但是实际上有更简单高效的方法——直接访问Mat类的像素点信息。

由于平常处理的都是二维图像,很少超过3维,所以cv::Mat中的at方法重载了有2个int参数的版本,用于访问某个像素点的RGB信息。

下面是一个举例:


#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;
using namespace cv;

int main( void )
{
    const int VERTEX_NUM = 1325;
    /// Windows names
    char freq_window[] = "freq";

    /// Create black empty images
    Mat freq_image = Mat::zeros( VERTEX_NUM, VERTEX_NUM, CV_8UC3 );

    ifstream log( "swap[20131230Mon155037].log" );

    vector< vector<int> > mat( VERTEX_NUM, vector<int>( VERTEX_NUM, 0 ) );
    int oldc, newc;
    char tmp;

    while (!log.eof( )) {
        log >> oldc >> tmp >> newc;
        mat[oldc][newc]++;
        freq_image.at<Vec3b>( oldc, newc ) = Vec3b( mat[oldc][newc], 255, 0 );
        //(freq_image.at<Vec3b>( oldc, newc ))[0]++;  // another way to operate
        waitKey( 1 );
        imshow( freq_window, freq_image );
    }
    imshow( freq_window, freq_image );

    log.close( );

    waitKey();
    return 0;
}


参考文献:http://stackoverflow.com/questions/7899108/opencv-get-pixel-information-from-mat-image

发布了9 篇原创文章 · 获赞 0 · 访问量 2万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览