数组转化成opencv图像并显示

1. Mat

void array2mat(int* data, int width, int height) {
    cv::Mat src = cv::Mat::zeros(width, height, CV_8UC3);
    for(int i = 0; i < width; ++i) {
        for(int j = 0; j < height; ++j) {
            // 根据自己的需求设置像素值
            if(data[640*i+j] == 255) {
                src.at<cv::Vec3b>(i, j)[0] = 255;
                src.at<cv::Vec3b>(i, j)[1] = 255;
                src.at<cv::Vec3b>(i, j)[2] = 255;
            }
        }
    }
    cv::imshow("img", src);
    cv::waitKey(0);
}

2. IplImage

IplImage* img = cvCreateImage(cvSize(width, height), 8, 1);
for(int j = 0; j < width*height; ++j) {
    img->imageData[j] = data[j];
}
cvNamedWindow( "Image", 1 );//创建窗口
cvShowImage( "Image", img );//显示图像
cvWaitKey(0); //等待按键
cvDestroyWindow( "Image" );//销毁窗口
cvReleaseImage( &img ); //释放图像
发布了50 篇原创文章 · 获赞 31 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/random_repick/article/details/80448102