Opencvchina網站:把證件照藍色背景轉爲白色

這是在Opencvchina網站上每週一練題目,第十五期要求把藍色背景轉爲白色背景,原圖下所示:

代碼如下所示:

// 證件照背景變色.cpp : 定義控制檯應用程序的入口點。
//
/*=========================================================================
名稱:圖片背景由藍色轉爲白色
時間:2013.08
說明:Opencvchina網站15期的每週一練題目
=========================================================================*/

#include "stdafx.h"
#include "cv.h"
#include "highgui.h"
#include "cxcore.h"


int _tmain(int argc, _TCHAR* argv[])
{
	//----------聲明圖片指針與加載----------//
	IplImage *src, *dst;
	src = cvLoadImage("./1.jpg");									//加載待處理圖片
	if(!src)
		return -1;
	dst = cvCreateImage(cvGetSize(src), src->depth, src->nChannels);//初始化dst
	cvZero(dst);													//把dst像素清零

	//---------設置ROI區域,膨脹來去除標誌---------//
	cvCopy(src, dst);
	cvSetImageROI(dst, cvRect(280, 340, 310, 40));
	cvDilate(dst, dst, NULL, 3);
	cvResetImageROI(dst);

	//----------調用填充函數,把藍色背景轉爲白色---------//
	cvFloodFill(dst, cvPoint(0,0), CV_RGB(255, 255, 255),
		cvScalarAll(10),
		cvScalarAll(10),
		NULL,
		4,
		NULL);

	//----------進一步膨脹標誌地方----------//
	cvSetImageROI(dst, cvRect(380, 340, 310, 40));
	cvDilate(dst, dst, NULL, 3);
	cvResetImageROI(dst);

	//---------創建顯示窗口與圖片顯示------------//
	cvNamedWindow("src");
	cvNamedWindow("dst");
	cvMoveWindow("src", 60, 60);
	cvMoveWindow("dst", 660, 60);
	cvShowImage("src", src);
	cvShowImage("dst", dst);
	cvSaveImage("3.jpg", dst);
	cvWaitKey();

	//----------銷燬所有窗口與釋放內存------------//
	cvDestroyAllWindows();
	cvReleaseImage(&src);
	cvReleaseImage(&dst);

	return 0;
}


處理好圖像如下所示:

如果有侵權麻煩留言,我刪除圖像,臉上是我劃掉的,與代碼無關

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章