个性水彩人像效果

来源:互联网 发布:latex软件 编辑:程序博客网 时间:2024/04/30 05:33

原图:

效果:


#include<opencv2\opencv.hpp>#include<iostream>using namespace cv;using namespace std;Mat dealGray(Mat &img);void dealShuiCai(Mat &img);int main() {Mat img = imread("E://图片//880.jpg");if (img.empty()) {return 0;}dealShuiCai(img);return 0;}Mat dealGray(Mat & img){Mat temp;cvtColor(img, temp, CV_BGR2GRAY);for (int i = 0; i < temp.rows; i++) {uchar *p = temp.ptr<uchar>(i);for (int j = 0; j < temp.cols; j++) {if (p[j] < 123) {p[j] = 255;}else {p[j] = 0;}}}return temp;}void dealShuiCai(Mat & img){Mat mask = dealGray(img);Mat bImg = imread("E://图片//纹理//662.jpg");if (bImg.empty()) {return ;}resize(bImg, bImg, mask.size());Mat result(mask.size(), mask.type());bImg.copyTo(result, mask);for (int i = 0; i < img.rows; i++) {uchar *p = result.ptr<uchar>(i);for (int j = 0;j < img.cols; j++) {if (p[j * 3 + 0] == 0) {p[j * 3 + 0] = 255;}if (p[j * 3 + 1] == 0) {p[j * 3 + 1] = 255;}if (p[j * 3 + 2] == 0) {p[j * 3 + 2] = 255;}}}Mat bIm = imread("E://图片//纹理//004.jpg");if (bIm.empty()) {return;}Mat tem;result.convertTo(tem, CV_32F);Mat img2;resize(bIm, img2, tem.size());img2.convertTo(img2, CV_32F);Mat result1 = tem.clone();float alpha = 0.35;  for (int i = 0; i < tem.rows; i++) {float *ptr_result = result1.ptr<float>(i);float *ptr_temp = img2.ptr<float>(i);float *ptr_img1 = tem.ptr<float>(i);for (int j = 0; j < tem.cols; j++) {ptr_result[j * 3 + 0] = (1 - alpha)*ptr_img1[j * 3 + 0] + alpha*ptr_temp[j * 3 + 0];ptr_result[j * 3 + 1] = (1 - alpha)*ptr_img1[j * 3 + 1] + alpha*ptr_temp[j * 3 + 1];ptr_result[j * 3 + 2] = (1 - alpha)*ptr_img1[j * 3 + 2] + alpha*ptr_temp[j * 3 + 2];}}result1.convertTo(result1, CV_8U);imshow("result", result1);waitKey(0);destroyAllWindows;}


0 0
原创粉丝点击