コード例 #1
0
  bool FuzzyStringComparator::compareStrings(std::string const& lhs, std::string const& rhs)
  {
    std::istringstream input_1(lhs);
    std::istringstream input_2(rhs);

    return compareStreams(input_1, input_2);

  } // compareStrings()
コード例 #2
0
ファイル: w2xconv.cpp プロジェクト: h0rm/nomacs-plugins
static void
apply_denoise(struct W2XConv *conv,
	      cv::Mat &image,
	      int denoise_level,
	      int blockSize,
	      enum w2xc::image_format fmt)
{
	struct W2XConvImpl *impl = conv->impl;
	ComputeEnv *env = &impl->env;

	std::vector<cv::Mat> imageSplit;
	cv::Mat *input;
	cv::Mat *output;
	cv::Mat imageY;

	if (IS_3CHANNEL(fmt)) {
		input = &image;
		output = &image;
	} else {
		cv::split(image, imageSplit);
		imageSplit[0].copyTo(imageY);
		input = &imageY;
		output = &imageSplit[0];
	}

	W2Mat output_2;
	W2Mat input_2(extract_view_from_cvmat(*input));

	if (denoise_level == 1) {
		w2xc::convertWithModels(conv, env, input_2, output_2,
					impl->noise1_models,
					&conv->flops, blockSize, fmt, conv->enable_log);
	} else {
		w2xc::convertWithModels(conv, env, input_2, output_2,
					impl->noise2_models,
					&conv->flops, blockSize, fmt, conv->enable_log);
	}

	*output = copy_to_cvmat(output_2);

	if (! IS_3CHANNEL(fmt)) {
		cv::merge(imageSplit, image);
	}
}
コード例 #3
0
ファイル: w2xconv.cpp プロジェクト: h0rm/nomacs-plugins
static void
apply_scale(struct W2XConv *conv,
	    cv::Mat &image,
	    int iterTimesTwiceScaling,
	    int blockSize,
	    enum w2xc::image_format fmt)
{
	struct W2XConvImpl *impl = conv->impl;
	ComputeEnv *env = &impl->env;

	if (conv->enable_log) {
		std::cout << "start scaling" << std::endl;
	}

	// 2x scaling
	for (int nIteration = 0; nIteration < iterTimesTwiceScaling;
	     nIteration++) {

		if (conv->enable_log) {
			std::cout << "#" << std::to_string(nIteration + 1)
				  << " 2x scaling..." << std::endl;
		}

		cv::Size imageSize = image.size();
		imageSize.width *= 2;
		imageSize.height *= 2;
		cv::Mat image2xNearest;
		cv::Mat imageY;
		std::vector<cv::Mat> imageSplit;
		cv::Mat image2xBicubic;
		cv::Mat *input, *output;

		cv::resize(image, image2xNearest, imageSize, 0, 0, cv::INTER_NEAREST);

		if (IS_3CHANNEL(fmt)) {
			input = &image2xNearest;
			output = &image;
		} else {
			cv::split(image2xNearest, imageSplit);
			imageSplit[0].copyTo(imageY);
			// generate bicubic scaled image and
			// convert RGB -> YUV and split
			imageSplit.clear();
			cv::resize(image,image2xBicubic,imageSize,0,0,cv::INTER_CUBIC);
			cv::split(image2xBicubic, imageSplit);
			input = &imageY;
			output = &imageSplit[0];
		}

		W2Mat output_2;
		W2Mat input_2(extract_view_from_cvmat(*input));

		if(!w2xc::convertWithModels(conv,
					    env,
					    input_2,
					    output_2,
					    impl->scale2_models,
					    &conv->flops, blockSize, fmt,
					    conv->enable_log))
		{
			std::cerr << "w2xc::convertWithModels : something error has occured.\n"
				"stop." << std::endl;
			std::exit(1);
		}

		*output = copy_to_cvmat(output_2);

		if (!IS_3CHANNEL(fmt)) {
			cv::merge(imageSplit, image);
		}

	} // 2x scaling : end
}