Esempio n. 1
0
_EXPORT void SaveIplImageExt(const char* path, const IplImageExt* image)
{
	CvSize size = image->GetSize();
	RECT rc;
	rc.left = 0; rc.top =0;
	rc.right = size.width; rc.bottom = size.height;
	IplImage* i = cvCreateImage(size, IPL_DEPTH_8U, 3);
	UCvPixel color1 = ucvPixel(255,255,255,255);
	UCvPixel color2 = ucvPixel(100,100,100,255);
	CheckerImageRect(i, &color1, &color2, 25, &rc);

	int x,y;
	UCvPixel pixel1;
	UCvPixel pixel2;
	for(y=0; y<size.height; y++){
		for(x=0; x<size.width; x++){
			switch(image->GetImgNChannel()){
				case 4:
					image->GetPixel(x, y, &pixel1);
					break;
				case 1:
					image->GetMaskData(x, y, &(pixel1.r));
					pixel1.b = pixel1.g = pixel1.r;
					pixel1.a = 255;
					break;
				default:
					assert(0);
					break;
			}
			GetPixelFromBGR(i, x, y, &pixel2);

			pixel1.b = pixel1.b*(pixel1.a/255.0) + (1.0 - pixel1.a/255.0)*pixel2.b;
			pixel1.g = pixel1.g*(pixel1.a/255.0) + (1.0 - pixel1.a/255.0)*pixel2.g;
			pixel1.r = pixel1.r*(pixel1.a/255.0) + (1.0 - pixel1.a/255.0)*pixel2.r;
			SetPixelToBGR(i, x, y, &pixel1);
		}
	}

	cvSaveImage(path, i);
	cvReleaseImage(&i);
}
Esempio n. 2
0
/*!
	市松模様を書き込む
	@param[in,out] img 書き込み先 3or4 ch
	@param[in] color1 色1
	@parma[in] color2 色2
	@parma[in] block_size ブロックサイズ
*/
void CheckerImage(IplImage* img, const UCvPixel* color1, const UCvPixel* color2, int block_size)
{
	CheckerImageRect(img, color1, color2, block_size, NULL);
}