資源簡介
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? {
for?(int?j?=?0;?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? min_rgb?=?fTemp? //?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個文件信息
評論
共有 條評論