OpenCV编程->图像边界拓展copyMakeBorder


	//打开原始图像
	string s[13] = { "ImageRGBL1.jpg", "ImageRGBL2.jpg", "ImageRGBL3.jpg",
		"ImageRGBL4.jpg", "ImageRGBL5.jpg", "ImageRGBL6.jpg",
		"ImageRGBL7.jpg", "ImageRGBL8.jpg", "ImageRGBL9.jpg" ,
		"ImageRGBL10.jpg", "ImageRGBL11.jpg", "ImageRGBL12.jpg","ImageRGBL13.jpg" };
	//保存变焦后图像
	string s1[13] = { "ImageRGB1.jpg", "ImageRGB2.jpg", "ImageRGB3.jpg",
		"ImageRGB4.jpg", "ImageRGB5.jpg", "ImageRGB6.jpg",
		"ImageRGB7.jpg", "ImageRGB8.jpg", "ImageRGB9.jpg",
		"ImageRGB10.jpg", "ImageRGB11.jpg", "ImageRGB12.jpg", "ImageRGB13.jpg" };
	Mat imgread, imgchange;
	
	// 1024/960=1.0667
	double scale = 0.8249;
	double F=2900;
	
	//颜色随机值  
	Scalar value;
	//设置随机颜色  
	value = Scalar(255, 255, 255);
	int k = 400;
	int width, height;

	
	while (std::fabs(2327.0 - F) > 0.01)
	{
		
		if (F>2327.0)
		{
			cout <<scale <<" -0.00001" << endl;
			scale = scale - 0.00001;
		}
		else
		{
			cout <<scale <<" +0.00001" << endl;
			scale = scale + 0.00001;
		}
		

		Size dsize = Size(1280 * scale, 960 * scale);
		Mat imgreadresize = Mat(dsize, CV_32S);
		Mat img1;
		for (int i = 0; i < 13; i++)
		{
			imgread = imread(s[i]);
			resize(imgread, imgreadresize, dsize);
			copyMakeBorder(imgreadresize, img1, k, k, k, k, BORDER_CONSTANT, value);
			width = img1.cols / 2 - 640;
			height = img1.rows / 2 - 512;
			imgchange = img1(cv::Range(height, height + 1024), cv::Range(width, width + 1280));
			imwrite(s1[i], imgchange);
		}
		F = SingleCameraCalibF();
		cout << "F is " << F << endl;

	}


猜你喜欢

转载自blog.csdn.net/sunboyiris/article/details/78071528
今日推荐