按照如下转换公式利用opencv编写代码。 原图
转换公式
 运行环境win10+opencv2.4.9+VS2015
 
#include "stdafx.h" #include<opencv2/opencv.hpp> #include<iostream> #include<math.h> #include<math.h> #include<complex> using namespace std; using namespace cv;  Mat BGR2YCbCr(Mat img, Mat out) { int width = img.rows; int height = img.cols; //cv::Mat out = cv::Mat::zeros(height, width, CV_32F); for (int j = 0; j < width    ; j++) { for (int i = 0; i < height; i++) { // Y    out.at<cv::Vec3b>(j, i)[0] = (int)((float)img.at<cv::Vec3b>(j, i)[0] * 0.114 + (float)img.at<cv::Vec3b>(j, i)[1] * 0.5870 + (float)img.at<cv::Vec3b>(j, i)[2] * 0.299); // Cb    out.at<cv::Vec3b>(j, i)[1] = (int)((float)img.at<cv::Vec3b>(j, i)[0] * 0.5 + (float)img.at<cv::Vec3b>(j, i)[1] * (-0.3323) + (float)img.at<cv::Vec3b>(j, i)[2] * (-0.1687) + 128); // Cr    out.at<cv::Vec3b>(j, i)[2] = (int)((float)img.at<cv::Vec3b>(j, i)[0] * (-0.0813) + (float)img.at<cv::Vec3b>(j, i)[1] * (-0.4187) + (float)img.at<cv::Vec3b>(j, i)[2] * 0.5 + 128); } } return out; } int main() {  Mat img = imread("2.jpg", cv::IMREAD_COLOR); imshow("齐宝宝", img); waitKey(0); int width = img.rows; int height = img.cols; /*Mat ycbcr = Mat::zeros(width,height,  CV_32FC3);*/ /*cv::Mat out = cv::Mat::zeros(height, width, CV_8UC3);*/    Mat ycbcr = img.clone();  ycbcr = BGR2YCbCr(img, ycbcr); /*ycbcr = process(ycbcr);*/ imshow("转换后", ycbcr); waitKey(0);  Mat Y,Cb,Cr;  vector<Mat> Ychannel, Cbchannel, Crchannel, channels; split(ycbcr, channels);  Mat Yimage = channels.at(0);  Mat Cbimage= channels.at(1);  Mat Crimage = channels.at(2); imshow("Yimg", Yimage); imshow("Cbimage", Cbimage); imshow("Crimage", Crimage); waitKey(0); 结果
 
 转换后
 
 Y通道
 
 Cb通道
 
 Cr通道
 
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算
 官方软件产品操作指南 (170)
官方软件产品操作指南 (170)