由左右眼图片合成红蓝/红青立体图
生活随笔
收集整理的這篇文章主要介紹了
由左右眼图片合成红蓝/红青立体图
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一個圖片可以分解為RGB(紅綠藍)三個通道。紅藍立體圖片原理就是將左右兩個視角的圖片合成,紅藍3D眼鏡的左眼鏡片是紅色的,所以將左視角圖片的紅色通道降低或者去掉,同理去掉右視角圖片的藍色通道,然后合成剩余四個通道就成了紅藍3D圖片。
原始圖像數(shù)據(jù)使用來自Middlebury Stereo官網(wǎng)的立體圖像數(shù)據(jù)集,數(shù)據(jù)集可從http://vision.middlebury.edu/stereo/data/scenes2014/下載使用,我這里附上其中一個,大家可直接保存測試
左眼圖像:
右眼圖像:
代碼:
#include <opencv2/opencv.hpp>int main() {cv::Mat left = imread("l.png", cv::IMREAD_COLOR);cv::Mat right = imread("r.png", cv::IMREAD_COLOR);cv::imshow("left", left);cv::imshow("right", right);// Split the image into different channels,order is B,G,Rstd::vector<cv::Mat> leftChannels(3);split(left, leftChannels);std::vector<cv::Mat> rightChannels(3);split(right, rightChannels);// Show individual channelscv::Mat blank_ch, fin_img;blank_ch = cv::Mat::zeros(cv::Size(left.cols, left.rows), CV_8UC1);std::vector<cv::Mat> channels_r;channels_r.push_back(leftChannels[0]);channels_r.push_back(leftChannels[1]);channels_r.push_back(rightChannels[1]);channels_r.push_back(rightChannels[2]);cv::merge(channels_r, fin_img);cv::imshow("out", fin_img);cv::imwrite("out.jpg", fin_img);cv::waitKey(0);return 0; }(曾嘗試使用cvMerge函數(shù)合成四個通道后使用cvSaveImage函數(shù)保存結(jié)果圖像,但發(fā)現(xiàn)cvSaveImage只能保存單通道或三通道圖像。)
保存的結(jié)果:
?
總結(jié)
以上是生活随笔為你收集整理的由左右眼图片合成红蓝/红青立体图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 业余数学牛人的数学自学心得(转载)
- 下一篇: 跨界教授林宙辰:从北大来,回北大去