opencv实现图片动画效果

来源:互联网 发布:前端模块化编程 编辑:程序博客网 时间:2024/05/19 06:17
#include "qtest1105.h"
#include <QtWidgets/QApplication>
#include <opencv2\core\utility.hpp>
#include <opencv2\imgproc.hpp>
#include <opencv2\highgui.hpp>
#include<string>
#include <iostream>
#include <limits>
using namespace std;
using namespace cv;


Mat img = imread("C:\\Users\\hasee\\Desktop\\cat2.jpg");
void showHistoCallback(int state, void* userData);
void equlizeCallback(int state, void* userData);
void lomoCallback(int state, void* userData);
void cartoonCallback(int state, void* userData);


int main()
{
Mat imgMedian;
medianBlur(img, imgMedian, 7);
imshow("medianBlur", imgMedian);//中值滤波去除噪声
Mat imgCanny;
Canny(imgMedian, imgCanny, 20, 150);
imshow("imgCanny", imgCanny);//用Canny检测边缘
Mat kernel = getStructuringElement(MORPH_RECT, Size(5, 5));
dilate(imgCanny, imgCanny, kernel);
imshow("边缘膨胀", imgCanny);//用于边缘膨胀
imgCanny = imgCanny / 255;
imgCanny = 1 - imgCanny;//边缘值缩放到1,并将值反转
Mat imgCannyf;
imgCanny.convertTo(imgCannyf, CV_32FC3);
blur(imgCannyf, imgCannyf, Size(5, 5));//模糊边缘实现平滑效果
Mat imgBF;
bilateralFilter(img, imgBF, 9, 150.0, 150.0);//色彩均匀化
Mat result = imgBF / 25;
result = result * 25;
imshow("result01", result);
Mat imgCanny3c;
Mat cannyChannels[] = { imgCannyf,imgCannyf,imgCannyf };
merge(cannyChannels, 3, imgCanny3c);
Mat resultf;
result.convertTo(resultf, CV_32FC3);
imshow("resultf", resultf);
multiply(resultf, imgCanny3c, resultf);
imshow("result02", result);
resultf.convertTo(result, CV_8UC3);
imshow("卡通效果", result);


//createButton("ss", showHistoCallback, NULL, QT_PUSH_BUTTON, 0);
//createButton("直方图均衡化",equlizeCallback,NULL,QT_PUSH_BUTTON,0);



waitKey(0);
return 0;
}
0 0
原创粉丝点击