#include "opencv2/xphoto/oilpainting.hpp"
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\//
extern "C" void SimpleSO(float* img, float* img2, int rows, int cols, int szSng)
{
int sz = sizeof(float);
if (sz == szSng)
{
cv::Mat inImg(rows, cols, CV_32FC3);
for (int i = 0; i < rows; i++)
{
cv::Vec3f* r = inImg.ptr<cv::Vec3f>(i);
int off = i * cols * 3;
for (int j = 0; j < cols; j++)
{
for (int k = 0; k < 3; k++)
{
r[j][k] = img[off + k];
}
off += 3;
}
}
inImg.convertTo(inImg, CV_8UC3);
cv::Mat outImg(rows, cols, CV_8UC3);
cv::xphoto::oilPainting(inImg, outImg, 10, 1, cv::COLOR_BGR2Lab);
outImg.convertTo(outImg, CV_32FC3);
for (int i = 0; i < rows; i++)
{
cv::Vec3f* r = outImg.ptr<cv::Vec3f>(i);
int off = i * cols * 3;
for (int j = 0; j < cols; j++)
{
for (int k = 0; k < 3; k++)
{
img2[off + k] = r[j][k];
}
off += 3;
}
}
}
}