24局部与分割-像素片段

24局部与分割-像素片段

可以用来统计视频中固定直线段上像素值的变化:

#include <stdio.h>
#include <cv.h>
#include <highgui.h>

void help() {
    printf("\nRead out RGB pixel values and store them to disk\nCall:\n"
        "./ch9_ex9_1 avi_file\n"
        "\n This will store to files blines.csv, glines.csv and rlines.csv\n\n");
}

int main(int argc, char** argv)
{
    //if (argc != 2) { help(); return -1; }
    cvNamedWindow("Example9_1", CV_WINDOW_AUTOSIZE);
    CvCapture* capture = cvCreateFileCapture("D:\\openvc_project\\learn_opencv_code\\LearningOpenCV_Code\\tree.avi");
    if (!capture) { printf("\nCouldn't open %s\n", "D:\\openvc_project\\learn_opencv_code\\LearningOpenCV_Code\\tree.avi"); help(); return -1; }
    CvPoint pt1 = cvPoint(10, 10);
    CvPoint pt2 = cvPoint(20, 20);

    int max_buffer;
    IplImage *rawImage;
    int r[10000], g[10000], b[10000];
    FILE *fptrb = fopen("blines.csv", "w"); //Store the data here
    FILE *fptrg = fopen("glines.csv", "w"); // for each color channel
    FILE *fptrr = fopen("rlines.csv", "w");
    CvLineIterator iterator;
    //MAIN PROCESSING LOOP:
    for (;;) {
        if (!cvGrabFrame(capture))
            break;
        rawImage = cvRetrieveFrame(capture);
        max_buffer = cvInitLineIterator(rawImage, pt1, pt2, &iterator, 8, 0);
        cvShowImage("Example9_1", rawImage);
        int c = cvWaitKey(10);
        for (int j = 0; j<max_buffer; j++) {
            fprintf(fptrb, "%d,", iterator.ptr[0]); //Write blue value
            fprintf(fptrg, "%d,", iterator.ptr[1]); //green
            fprintf(fptrr, "%d,", iterator.ptr[2]); //red
            iterator.ptr[2] = 255;  //Mark this sample in red
            CV_NEXT_LINE_POINT(iterator); //Step to the next pixel
        }
        //OUTPUT THE DATA IN ROWS:
        fprintf(fptrb, "\n"); fprintf(fptrg, "\n"); fprintf(fptrr, "\n");
    }
    //CLEAN UP:
    printf("\nData stored to files: blines.csv, glines.csv and rlines.csv\n\n");
    fclose(fptrb); fclose(fptrg); fclose(fptrr);
    cvReleaseCapture(&capture);
    cvDestroyWindow("Example9_1");
}

生成的其中的一个文件如下:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值