您的位置:首页 > 编程语言 > C语言/C++

opencv生成彩色图c++代码实例及运行结果

2018-02-26 09:54 585 查看
c++代码#include<opencv2/opencv.hpp>

using namespace std;
using namespace cv;

Mat cartoonColor(Mat srcColor, Mat result)
{
Size size = srcColor.size();
Size smallSize;
smallSize.width = size.width / 2;//分辨率减半,因双边滤波时间很长
smallSize.height = size.height / 2;
Mat smallImg = Mat(smallSize, CV_8UC3);
resize(srcColor, smallImg, smallSize, 0, 0, INTER_LINEAR);
//imshow("原图像", srcColor);

Mat tmp = Mat(smallSize, CV_8UC3);
int repetitions = 6;
for (int i = 0; i < repetitions; i++)
{
int ksize = 9;
double sigmaColor = 8;
double sigmaSpace = 6;
bilateralFilter(smallImg, tmp, ksize, sigmaColor, sigmaSpace);
bilateralFilter(tmp, smallImg, ksize, sigmaColor, sigmaSpace);
}
Mat bigImg;
resize(smallImg, bigImg, size, 0, 0, INTER_LINEAR);
//imshow("彩色图像", bigImg);
result = bigImg;
return result;

}

int main()
{
VideoCapture camera(0);
Mat cameraFrame;
//分辨率设置为640*480,此台电脑对视频输入的图像不起作用,摄像头可以
camera.set(CV_CAP_PROP_FRAME_WIDTH, 640);
camera.set(CV_CAP_PROP_FRAME_HEIGHT, 480);

while (camera.isOpened())
{
camera >> cameraFrame;
if (cameraFrame.empty())
{
cerr << "ERROR:Could not grab a camera frame" << endl;
exit(1);
}
Mat displayedFrame(cameraFrame.size(), CV_8UC3);
//创建cartoonifier filter
displayedFrame = cartoonColor(cameraFrame, displayedFrame);
imshow("彩色图", displayedFrame);
if (waitKey(40)==27)//esc键退出
break;
}

return 0;
}运行结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: