亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? io.cpp

?? 圖像分割算法
?? CPP
字號:
//Copyright (c) 2004-2005, Baris Sumengen
//All rights reserved.
//
// CIMPL Matrix Performance Library
//
//Redistribution and use in source and binary
//forms, with or without modification, are
//permitted provided that the following
//conditions are met:
//
//    * No commercial use is allowed. 
//    This software can only be used
//    for non-commercial purposes. This 
//    distribution is mainly intended for
//    academic research and teaching.
//    * Redistributions of source code must
//    retain the above copyright notice, this
//    list of conditions and the following
//    disclaimer.
//    * Redistributions of binary form must
//    mention the above copyright notice, this
//    list of conditions and the following
//    disclaimer in a clearly visible part 
//    in associated product manual, 
//    readme, and web site of the redistributed 
//    software.
//    * Redistributions in binary form must
//    reproduce the above copyright notice,
//    this list of conditions and the
//    following disclaimer in the
//    documentation and/or other materials
//    provided with the distribution.
//    * The name of Baris Sumengen may not be
//    used to endorse or promote products
//    derived from this software without
//    specific prior written permission.
//
//THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
//HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
//EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT
//NOT LIMITED TO, THE IMPLIED WARRANTIES OF
//MERCHANTABILITY AND FITNESS FOR A PARTICULAR
//PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
//CONTRIBUTORS BE LIABLE FOR ANY
//DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
//EXEMPLARY, OR CONSEQUENTIAL DAMAGES
//(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
//OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
//DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
//HOWEVER CAUSED AND ON ANY THEORY OF
//LIABILITY, WHETHER IN CONTRACT, STRICT
//LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
//OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
//OF THIS SOFTWARE, EVEN IF ADVISED OF THE
//POSSIBILITY OF SUCH DAMAGE.



#include "./IO.h"
//#include "./ImageMagick.h"
#include "wand/magick_wand.h"
#ifndef ThrowWandException

#define ThrowWandException(wand) \
{ \
char \
*description; \
\
ExceptionType \
severity; \
\
description=MagickGetException(wand,&severity); \
(void) fprintf(stderr,"%s %s %ld %s\n",GetMagickModule(),description); \
description=(char *) MagickRelinquishMemory(description); \
exit(-1); \
}

#endif


namespace IO
{

	void WriteMFile(Matrix<ComplexFloat>& m, string variable, string filename)
	{
		Matrix<float> re = Real(m);
		Matrix<float> im = Imag(m);
		
		ofstream mfile(filename.c_str(), ios::out);
		if(!RandomGen::Initialized())
		{
			RandomGen::Initialize();
		}
		//int variable = (int)(rand()/(double)RAND_MAX*1000);
		
		mfile <<  variable << " = [ " << endl;
		
		for(int i=0; i<m.Rows(); i++)
		{
			int c = 0;
			for(int j=0; j<m.Columns(); j++)
			{
				mfile << re.ElemNC(i,j) << " + " << im.ElemNC(i,j) << "i" << "   ";
				c++;
				if(c==500)
				{
					mfile << " ..." << endl;
				}
			}
			mfile << endl;
		}
		mfile << "];" << endl;
	}
	
	
	void WriteMFile(Vector<ComplexFloat>& m, string variable, string filename)
	{
		WriteMFile((Matrix<ComplexFloat>)m, variable, filename);
	}

	void WriteMFile(Matrix<ComplexDouble>& m, string variable, string filename)
	{
		Matrix<double> re = Real(m);
		Matrix<double> im = Imag(m);
		
		ofstream mfile(filename.c_str(), ios::out);
		if(!RandomGen::Initialized())
		{
			RandomGen::Initialize();
		}
		//int variable = (int)(rand()/(double)RAND_MAX*1000);
		
		mfile << variable << " = [ " << endl;
		
		for(int i=0; i<m.Rows(); i++)
		{
			int c = 0;
			for(int j=0; j<m.Columns(); j++)
			{
				mfile << re.ElemNC(i,j) << " + " << im.ElemNC(i,j) << "i" << "   ";
				c++;
				if(c==500)
				{
					mfile << " ..." << endl;
				}
			}
			mfile << endl;
		}
		mfile << "];" << endl;
	}

	void WriteMFile(Vector<ComplexDouble>& m, string variable, string filename)
	{
		WriteMFile((Matrix<ComplexDouble>)m, variable, filename);
	}





	MatrixList<unsigned char> ImRead(char *filename)
	{
		MagickBooleanType status;
		MagickWand *magick_wand;
		magick_wand = NewMagickWand();  

		status = MagickReadImage(magick_wand, filename);
		if (status == MagickFalse)
		{
			ThrowWandException(magick_wand);
		}				ImageType imType = MagickGetImageType(magick_wand);		char *map;		int isRGB;		//|| imType == BilevelType		if(imType == GrayscaleType || imType == BilevelType)		{			map = "I";			isRGB = 1;		}		else if(imType == TrueColorMatteType || imType == PaletteMatteType)		{			map = "RGBA";			isRGB = 3;		}		else		{			map = "RGB";			isRGB = 2;		}				int hei = (int)MagickGetImageHeight(magick_wand);		int wid = (int)MagickGetImageWidth(magick_wand);				int l;		if(isRGB == 2)		{			l = 3*wid*hei;		}		else if(isRGB == 1)		{			l = wid*hei;		}		else if(isRGB == 3)		{			l = 4*wid*hei;		}		unsigned char *pixels = new (std::nothrow) unsigned char[l];		Utility::CheckPointer(pixels);		status = MagickGetImagePixels( magick_wand, 0, 0, wid, hei, map, CharPixel, pixels );		if (status == MagickFalse)
		{
			ThrowWandException(magick_wand);
		}
		MatrixList<unsigned char> temp;
		if(isRGB == 2)		{			temp = MatrixList<unsigned char>(3,hei,wid);
		}
		else if(isRGB == 1)		{			temp = MatrixList<unsigned char>(1,hei,wid);
		}
		else if(isRGB == 3)		{			temp = MatrixList<unsigned char>(4,hei,wid);
		}

		int z=0;		for(int i=0; i<temp.Rows(); i++)		{			for(int j=0; j<temp.Columns(); j++)			{				for(int k=0; k<temp.Planes(); k++)				{					temp[k].ElemNC(i,j) = pixels[z];					z++;				}			}		}		
		delete [] pixels;

		magick_wand = DestroyMagickWand(magick_wand);
		
		return temp;
	}





	void ImWrite(Matrix<unsigned char>& Image, char *filename)
	{
		char *map = "I";
		MagickBooleanType status;
		MagickWand *magick_wand;
		magick_wand = NewMagickWand();  

		unsigned char *pixels = new (std::nothrow) unsigned char[Image.Length()];		Utility::CheckPointer(pixels);		int z = 0;		for(int i=0; i<Image.Rows(); i++)		{			for(int j=0; j<Image.Columns(); j++)			{				pixels[z] = Image.ElemNC(i,j);				z++;			}		}
		status = MagickConstituteImage(magick_wand, Image.Columns(), Image.Rows(), map, CharPixel, pixels);
		if (status == MagickFalse)
		{
			ThrowWandException(magick_wand);
		}		status = MagickWriteImage(magick_wand, filename);		if (status == MagickFalse)
		{
			ThrowWandException(magick_wand);
		}				delete [] pixels;		magick_wand = DestroyMagickWand(magick_wand);
	
	}



	void ImWrite(MatrixList<unsigned char>& Image, char *filename)
	{
		//bool imageList = false;
		char *map;
		if(Image.Planes() == 1)
		{
			map = "I";
		}
		else if(Image.Planes() == 3)
		{
			map = "RGB";
		}
		else if(Image.Planes() == 4)
		{
			map = "RGBA";
		}
		//else if(Image.Planes() > 0)
		//{
		//	map = "I";
		//	imageList = true;
		//}
		else
		{
			cerr << "Line: " << __LINE__ << " File: " << __FILE__ << endl;
			Utility::RunTimeError("MatrixList should consist either 1 (gray scale), 3 (RGB) or 4 (RGBA) planes!");
		}

		MagickBooleanType status;
		MagickWand *magick_wand;
		magick_wand = NewMagickWand();  

		//if(imageList)
		//{
		//	for(int p=0;p<Image.Planes();p++)
		//	{
		//		MagickWand *temp_wand;
		//		temp_wand = NewMagickWand();  
		//		int arrayLength = Image.Rows()*Image.Columns();
		//		unsigned char *pixels = new unsigned char[arrayLength];		//		int z=0;		//		for(int i=0; i<Image.Rows(); i++)		//		{		//			for(int j=0; j<Image.Columns(); j++)		//			{		//				pixels[z] = Image[p].ElemNC(i,j);		//				z++;		//			}		//		}
		//		status = MagickConstituteImage(temp_wand, Image.Columns(), Image.Rows(), map, CharPixel, pixels);
		//		if (status == MagickFalse)
		//		{
		//			ThrowWandException(temp_wand);
		//		}		//		status = MagickAddImage(magick_wand, temp_wand);		//		if (status == MagickFalse)
		//		{
		//			ThrowWandException(magick_wand);
		//		}		//		temp_wand = DestroyMagickWand(temp_wand);
		//	}
		//	status = MagickWriteImages(magick_wand, filename, MagickTrue);		//	if (status == MagickFalse)
		//	{
		//		ThrowWandException(magick_wand);
		//	}		//}
		//else
		//{
		
		int arrayLength = Image.Rows()*Image.Columns()*Image.Planes();
		unsigned char *pixels = new (std::nothrow) unsigned char[arrayLength];		Utility::CheckPointer(pixels);		int z=0;		for(int i=0; i<Image.Rows(); i++)		{			for(int j=0; j<Image.Columns(); j++)			{				for(int k=0; k<Image.Planes(); k++)				{					pixels[z] = Image[k].ElemNC(i,j);					z++;				}			}		}
		status = MagickConstituteImage(magick_wand, Image.Columns(), Image.Rows(), map, CharPixel, pixels);
		if (status == MagickFalse)
		{
			ThrowWandException(magick_wand);
		}		status = MagickWriteImage(magick_wand, filename);		if (status == MagickFalse)
		{
			ThrowWandException(magick_wand);
		}				//}		delete [] pixels;		magick_wand = DestroyMagickWand(magick_wand);
	
	}
	
	
	
	
	
	void ImWrite(Matrix<int>& Image, char *filename)
	{
		Matrix<unsigned char> temp(Image.Rows(), Image.Columns());
		int max = Maximum(Image(":"));
		int min = Minimum(Image(":"));

		if((max-min) == 0)
		{
			Utility::Warning("Image is constant. Setting its values to zero (black)!");
			temp.Init(0);
		}
		else
		{
			for(int i=0; i<Image.Length(); i++)
			{
				temp.ElemNC(i) = (unsigned char)((Image.ElemNC(i)-min)*255.0/(max-min)+0.5);
			}
		}

		ImWrite(temp, filename);
	}




	
	void ImWrite(MatrixList<int>& Image, char *filename)
	{
		MatrixList<unsigned char> temp(Image.Planes(), Image.Rows(), Image.Columns());
		int max = Image[0].ElemNC(0);
		int min = Image[0].ElemNC(0);
		for(int z=0; z<Image.Planes(); z++)
		{
			for(int i=0; i<Image[z].Length(); i++)
			{
				max = max >= Image[z].ElemNC(i) ? max : Image[z].ElemNC(i);
				min = min <= Image[z].ElemNC(i) ? min : Image[z].ElemNC(i);
			}
		}
		if((max-min) == 0)
		{
			Utility::Warning("Image is constant. Setting its values to zero (black)!");
			for(int z=0; z<Image.Planes(); z++)
			{
				temp[z].Init(0);
			}
		}
		else
		{
			for(int z=0; z<Image.Planes(); z++)
			{
				for(int i=0; i<Image[z].Length(); i++)
				{
					temp[z].ElemNC(i) = (unsigned char)((Image[z].ElemNC(i)-min)*255.0/(max-min)+0.5);
				}
			}
		}

		ImWrite(temp, filename);
	}




	void ImWrite(Matrix<float>& Image, char *filename)
	{
		Matrix<unsigned char> temp(Image.Rows(), Image.Columns());
		float max = Maximum(Image(":"));
		float min = Minimum(Image(":"));

		if((max-min) < 0.000000001)
		{
			Utility::Warning("Image is (almost) constant. Setting its values to zero (black)!");
			temp.Init(0);
		}
		else
		{
			for(int i=0; i<Image.Length(); i++)
			{
				temp.ElemNC(i) = (unsigned char)((Image.ElemNC(i)-min)*255.0/(max-min)+0.5);
			}
		}

		ImWrite(temp, filename);
	}


	void ImWrite(MatrixList<float>& Image, char *filename)
	{
		MatrixList<unsigned char> temp(Image.Planes(), Image.Rows(), Image.Columns());
		float max = Image[0].ElemNC(0);
		float min = Image[0].ElemNC(0);
		for(int z=0; z<Image.Planes(); z++)
		{
			for(int i=0; i<Image[z].Length(); i++)
			{
				max = max >= Image[z].ElemNC(i) ? max : Image[z].ElemNC(i);
				min = min <= Image[z].ElemNC(i) ? min : Image[z].ElemNC(i);
			}
		}
		if((max-min) < 0.000000001)
		{
			Utility::Warning("Image is constant. Setting its values to zero (black)!");
			for(int z=0; z<Image.Planes(); z++)
			{
				temp[z].Init(0);
			}
		}
		else
		{
			for(int z=0; z<Image.Planes(); z++)
			{
				for(int i=0; i<Image[z].Length(); i++)
				{
					temp[z].ElemNC(i) = (unsigned char)((Image[z].ElemNC(i)-min)*255.0/(max-min)+0.5);
				}
			}
		}

		ImWrite(temp, filename);
	}



	void ImWrite(Matrix<double>& Image, char *filename)
	{
		Matrix<unsigned char> temp(Image.Rows(), Image.Columns());
		double max = Maximum(Image(":"));
		double min = Minimum(Image(":"));

		if((max-min) < 0.00000000000001)
		{
			Utility::Warning("Image is (almost) constant. Setting its values to zero (black)!");
			temp.Init(0);
		}
		else
		{
			for(int i=0; i<Image.Length(); i++)
			{
				temp.ElemNC(i) = (unsigned char)((Image.ElemNC(i)-min)*255.0/(max-min)+0.5);
			}
		}

		ImWrite(temp, filename);
	}


	void ImWrite(MatrixList<double>& Image, char *filename)
	{
		MatrixList<unsigned char> temp(Image.Planes(), Image.Rows(), Image.Columns());
		double max = Image[0].ElemNC(0);
		double min = Image[0].ElemNC(0);
		for(int z=0; z<Image.Planes(); z++)
		{
			for(int i=0; i<Image[z].Length(); i++)
			{
				max = max >= Image[z].ElemNC(i) ? max : Image[z].ElemNC(i);
				min = min <= Image[z].ElemNC(i) ? min : Image[z].ElemNC(i);
			}
		}
		if((max-min) < 0.00000000000001)
		{
			Utility::Warning("Image is constant. Setting its values to zero (black)!");
			for(int z=0; z<Image.Planes(); z++)
			{
				temp[z].Init(0);
			}
		}
		else
		{
			for(int z=0; z<Image.Planes(); z++)
			{
				for(int i=0; i<Image[z].Length(); i++)
				{
					temp[z].ElemNC(i) = (unsigned char)((Image[z].ElemNC(i)-min)*255.0/(max-min)+0.5);
				}
			}
		}

		ImWrite(temp, filename);
	}


















};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区久久| 国产伦精品一区二区三区在线观看| 日韩主播视频在线| 波多野结衣亚洲| 日韩一区二区电影| 亚洲一区二区精品久久av| 国产精品一级片在线观看| 91精品国产综合久久久久久| 中文字幕视频一区| 国产二区国产一区在线观看| 日韩一级大片在线观看| 性做久久久久久久久| 91影院在线免费观看| 国产欧美一区二区精品秋霞影院 | 国产亚洲制服色| av一区二区不卡| 日韩亚洲国产中文字幕欧美| 亚洲综合自拍偷拍| 91麻豆6部合集magnet| 亚洲欧洲美洲综合色网| 国产激情视频一区二区在线观看 | 久久久综合视频| 久久99久久久欧美国产| 3d成人h动漫网站入口| 亚洲成人tv网| 欧美日韩一区高清| 亚洲成av人片观看| 欧美日韩一二三区| 天天av天天翘天天综合网| 91麻豆自制传媒国产之光| 亚洲天堂中文字幕| 99久久国产综合精品女不卡| 国产精品久久看| 不卡一区在线观看| 亚洲欧美欧美一区二区三区| 91免费视频网址| 亚洲人成7777| 欧美性xxxxx极品少妇| 香蕉久久一区二区不卡无毒影院| 欧美日韩在线观看一区二区| 亚洲不卡在线观看| 日韩欧美区一区二| 国产乱理伦片在线观看夜一区| 国产午夜精品一区二区 | 欧美综合天天夜夜久久| 亚洲一区二区综合| 在线播放欧美女士性生活| 人妖欧美一区二区| 久久伊人蜜桃av一区二区| 国产.欧美.日韩| 亚洲精品高清在线观看| 欧美日韩精品综合在线| 久久99精品久久久久久动态图| 久久综合九色欧美综合狠狠| av一本久道久久综合久久鬼色| 亚洲免费观看高清完整版在线观看熊| 欧洲国内综合视频| 狂野欧美性猛交blacked| 国产人伦精品一区二区| 欧美制服丝袜第一页| 免费成人在线影院| 中文字幕中文字幕一区二区| 欧美日韩在线观看一区二区| 国产麻豆精品95视频| 亚洲免费在线视频| 欧美韩日一区二区三区| 欧美揉bbbbb揉bbbbb| 国产在线不卡一区| 亚洲国产精品久久不卡毛片| 26uuu欧美| 欧美日韩精品高清| 成人午夜视频在线观看| 日韩精品乱码av一区二区| 欧美国产综合色视频| 7777精品伊人久久久大香线蕉经典版下载 | 久久久久久**毛片大全| 在线观看一区二区精品视频| 国模套图日韩精品一区二区| 亚洲天堂av老司机| 精品国产一区二区三区四区四| av电影在线不卡| 精品一区二区三区免费视频| 亚洲另类春色校园小说| wwwwww.欧美系列| 欧美欧美欧美欧美首页| 93久久精品日日躁夜夜躁欧美| 久久国产精品色| 婷婷一区二区三区| 一区二区三区日韩| 中文字幕欧美区| 久久久夜色精品亚洲| 欧美精品在线视频| 欧美系列亚洲系列| 91免费观看在线| 高清成人在线观看| 国产综合一区二区| 蜜臀av性久久久久蜜臀av麻豆| 亚洲美女屁股眼交3| 国产精品久久久久久久久免费丝袜 | 日韩一级完整毛片| 欧美色视频一区| 精品福利在线导航| 91.麻豆视频| 9191成人精品久久| 欧美日本一区二区在线观看| 色婷婷一区二区| 99久久综合国产精品| 成人高清免费在线播放| 成人污视频在线观看| 国产精品888| 国产99精品视频| 成人黄动漫网站免费app| 国产成人免费视频网站| 国产成人av影院| 成人午夜视频福利| 99精品视频一区| 91色在线porny| 91成人在线精品| 欧美性猛交xxxx乱大交退制版 | 欧美成人a视频| 精品国产一区二区三区av性色| 9191成人精品久久| 精品国产乱码久久久久久免费| 精品久久久久久久人人人人传媒| 欧美草草影院在线视频| 337p粉嫩大胆色噜噜噜噜亚洲| 久久亚洲二区三区| 国产精品欧美一区二区三区| 亚洲三级视频在线观看| 亚洲国产精品久久人人爱| 日韩国产欧美在线播放| 免费成人在线观看视频| 韩国成人精品a∨在线观看| 国产精品一区专区| 色综合天天性综合| 日韩精品一区二区三区在线| 日韩女优av电影| 亚洲国产精品国自产拍av| 美女一区二区久久| 国内精品伊人久久久久av影院 | 91精品办公室少妇高潮对白| 欧美精品 国产精品| 精品乱人伦一区二区三区| 国产精品色噜噜| 婷婷国产在线综合| 国产成人h网站| 精品视频1区2区| 日本一区二区免费在线观看视频| 亚洲精品乱码久久久久久黑人 | 欧美成人艳星乳罩| 欧美国产欧美亚州国产日韩mv天天看完整 | 偷拍日韩校园综合在线| 国产麻豆精品视频| 欧美日韩一区二区在线视频| 久久免费视频色| 亚洲成人激情自拍| 国产成人a级片| 91精品国产综合久久福利| 国产免费观看久久| 日韩国产精品久久久| 91视频免费播放| 国产欧美一区二区精品仙草咪| 亚洲国产毛片aaaaa无费看| 国产精品一区专区| 欧美日本一区二区三区四区| 国产精品第13页| 精品一区二区三区久久久| 91老师片黄在线观看| www久久精品| 丝袜诱惑亚洲看片| 99国产精品久久久久| 久久综合久久综合久久综合| 婷婷国产在线综合| 一本色道亚洲精品aⅴ| 久久精品视频免费观看| 日本在线不卡视频一二三区| 97久久超碰国产精品| 久久色视频免费观看| 午夜精品久久久久| 色欧美片视频在线观看在线视频| 久久久久综合网| 麻豆精品在线视频| 欧美精品tushy高清| 亚洲观看高清完整版在线观看| yourporn久久国产精品| 久久九九99视频| 精品一区二区三区香蕉蜜桃| 欧美一区二区三区性视频| 婷婷国产在线综合| 欧美日韩一区久久| 亚洲国产精品久久人人爱蜜臀 | 日韩久久免费av| 日韩电影在线观看电影| 欧美日本在线一区| 天堂在线亚洲视频| 欧美日韩精品欧美日韩精品一| 亚洲国产精品自拍| 欧美精品黑人性xxxx| 亚洲r级在线视频| 91精品视频网|