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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值