资源简介
opencv实现图片的风格化,针对任务效果不好,针对风景不错
代码片段和文件信息
#include
#include
#include
#include
#include
#include
using namespace cv;
using namespace std;
void find_move_people();
IplImage *srcImage *cannyImage;
char *grayWindow *cannyWindow;
void canny();
void changeSImage(Mat &image IplImage &outImg float sRadio);
IplImage* catHSImage(CvMat* HSI_H CvMat* HSI_S CvMat* HSI_I);
IplImage* HSI2RGBImage(CvMat* HSI_H CvMat* HSI_S CvMat* HSI_I);
void pasteEdge(Mat &image Mat &outImg IplImage cannyImage);
void on_trackbar(int threshold)
{
// 灰度图,canny输出图,低阈值,高阈值,灰度梯度的算子内核大小
cvCanny(srcImage cannyImage threshold threshold * 3 3);
cvShowImage(cannyWindow cannyImage);
}
int main(void)
{
char *img = “data//3.jpg“;
Mat image = imread(img);
//canny边缘检测
srcImage = cvLoadImage(img CV_LOAD_IMAGE_GRAYSCALE);
cannyImage = cvCreateImage(cvGetSize(srcImage) IPL_DEPTH_8U 1);
int threshold = 70;
cvCanny(srcImage cannyImage threshold threshold * 3 3);
cvShowImage(“边缘“ cannyImage);
Mat pasteEdgeMat;
pasteEdge(image pasteEdgeMat *cannyImage);
// 显示将边缘贴在原图上
imshow(“canny贴图“ pasteEdgeMat);
// 双边滤波
Mat binateMat;
bilateralFilter(pasteEdgeMat binateMat 10 50 50 BORDER_DEFAULT);
//不贴边缘直接双边滤波
//bilateralFilter(image binateMat 10 50 50 BORDER_DEFAULT);
imshow(“原图“ image);
imshow(“双边滤波“ binateMat);
//增强图像的颜色饱和度
IplImage outImg;
changeSImage(binateMat outImg 5);
cvShowImage(“hsi2“ &outImg);
waitKey(0);
}
// 将边缘检测后的图 cannyImage 边以黑色的形式贴在 image上。
void pasteEdge(Mat &image Mat &outImg IplImage cannyImage)
{
Mat cannyMat;
cannyMat = cvarrToMat(&cannyImage);
//颜色反转
cannyMat = cannyMat < 100;
image.copyTo(outImg cannyMat);
}
// 将image 像素转化到 HSI 空间,并调整S 即颜色的饱和度,
void changeSImage(Mat &image IplImage &outImg float sRadio)
{
int rows = image.rows;
int cols = image.cols;
// 三个HSI空间数据矩阵
CvMat* HSI_H = cvCreateMat(rows cols CV_32FC1);
CvMat* HSI_S = cvCreateMat(rows cols CV_32FC1);
CvMat* HSI_I = cvCreateMat(rows cols CV_32FC1);
// 原始图像数据指针 HSI矩阵数据指针
uchar* data;
// rgb分量
int img_r img_g img_b;
int min_rgb; // rgb分量中的最小值
// HSI分量
float fHue fSaturation fIntensity;
int channels = image.channels();
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
data = image.ptr(i);
data = data + j*channels;
img_b = *data;
data++;
img_g = *data;
data++;
img_r = *data;
// Intensity分量[0 1]
fIntensity = (float)((img_b + img_g + img_r) / 3) / 255;
// 得到RGB分量中的最小值
float fTemp = img_r < img_g ? img_r : img_g;
min_rgb = fTemp < img_b ? fTemp : img_b;
// Saturation分量[0 1]
fSaturation = 1 - (float)(3 * min_rgb) / (img_r + img_g + img_b);
// 计算theta角
float numerator = (img_r - img_g + img_r - img_b) / 2;
float denominator = sqrt(
pow((img_r - img_g) 2) + (img_r - img_b)*(img_g - img_b));
// 计算Hue分量
if (denominator != 0)
{
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-08-13 12:51 cartoon-master\
文件 765 2017-08-13 12:51 cartoon-master\README.md
文件 13959168 2017-08-13 12:51 cartoon-master\cartoon.sdf
文件 1293 2017-08-13 12:51 cartoon-master\cartoon.sln
文件 25088 2017-08-13 12:51 cartoon-master\cartoon.v12.suo
目录 0 2017-08-13 12:51 cartoon-master\cartoon\
目录 0 2017-08-13 12:51 cartoon-master\cartoon\Debug\
文件 3870 2017-08-13 12:51 cartoon-master\cartoon\Debug\cartoon.log
文件 244055 2017-08-13 12:51 cartoon-master\cartoon\Debug\cartoon.obj
目录 0 2017-08-13 12:51 cartoon-master\cartoon\Debug\cartoon.tlog\
文件 12776 2017-08-13 12:51 cartoon-master\cartoon\Debug\cartoon.tlog\CL.read.1.tlog
文件 688 2017-08-13 12:51 cartoon-master\cartoon\Debug\cartoon.tlog\CL.write.1.tlog
文件 192 2017-08-13 12:51 cartoon-master\cartoon\Debug\cartoon.tlog\cartoon.lastbuildstate
文件 826 2017-08-13 12:51 cartoon-master\cartoon\Debug\cartoon.tlog\cl.command.1.tlog
文件 2 2017-08-13 12:51 cartoon-master\cartoon\Debug\cartoon.tlog\li
文件 2 2017-08-13 12:51 cartoon-master\cartoon\Debug\cartoon.tlog\li
文件 2 2017-08-13 12:51 cartoon-master\cartoon\Debug\cartoon.tlog\li
文件 0 2017-08-13 12:51 cartoon-master\cartoon\Debug\cartoon.tlog\unsuccessfulbuild
文件 420864 2017-08-13 12:51 cartoon-master\cartoon\Debug\vc120.idb
文件 741376 2017-08-13 12:51 cartoon-master\cartoon\Debug\vc120.pdb
文件 7234 2017-08-13 12:51 cartoon-master\cartoon\cartoon.vcxproj
文件 923 2017-08-13 12:51 cartoon-master\cartoon\cartoon.vcxproj.filters
目录 0 2017-08-13 12:51 cartoon-master\cartoon\data\
文件 152515 2017-08-13 12:51 cartoon-master\cartoon\data\1.JPG
文件 151994 2017-08-13 12:51 cartoon-master\cartoon\data\2.JPG
文件 140777 2017-08-13 12:51 cartoon-master\cartoon\data\3.JPG
目录 0 2017-08-13 12:51 cartoon-master\cartoon\x64\
目录 0 2017-08-13 12:51 cartoon-master\cartoon\x64\Debug\
文件 3270 2017-08-13 12:51 cartoon-master\cartoon\x64\Debug\cartoon.log
文件 298826 2017-08-13 12:51 cartoon-master\cartoon\x64\Debug\cartoon.obj
目录 0 2017-08-13 12:51 cartoon-master\cartoon\x64\Debug\cartoon.tlog\
............此处省略18个文件信息
相关资源
- 基于SVM与ANN的车牌识别
- OpenCV实现同一窗口显示多幅图片
- haar特征的手势检测OpenCV
- 基于opencv的人脸表情识别的预处理
- opencv+qt+vs的摄像头视频显示和处理G
- OpenCV算法精解——源码和测试图片
- opencv结构光生成代码
- opencv 书籍
- 基于PCA的人脸识别系统
-
haartraining+ob
jectmarker,opencv,Adaboo - opencv提取光斑质心
- Ubuntu下Opencv显示中文
- 划痕缺陷检测
- 单USB双目摄像头拍摄程序
- RAAR相位恢复 opencv
- FTVd全变差去模糊opencv实现
- 全变差TV去噪(split bregman) opencv
- opencv开启本地摄像头并拍照
- 基于opencv的激光线中心提取源码
- opencv3.0 鱼眼标定校正 改进
- 简单的一维高斯滤波程序
- FreeType 结合opencv在图像上显示中文程
- Mastering OpenCV with Practical Computer Visio
- opencv计算机视觉编程攻略图片集
- Opencv安装过程中使用的vgg_generated_12
- opencv计算两平行线之间的距离
- 计算圆轮廓面积提取圆心
- 服务器截屏并使用socket发送给客户端
- Keras图像深度学习实战原版
- 训练得到的900维 HOG特征-检测算子进行
评论
共有 条评论