OpenCV 基本图形处理集锦

//opencv显示文件中图片方法
bool ShowImg()
{
	UpdateData(true);
	CFileDialog fd(TRUE,_T("bmp"),_T(".bmp"),OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"位图文件(*.bmp)|*.bmp||",this);
	CString path;
	if(fd.DoModal()==IDOK)
	{
		path=fd.GetPathName();
	}
	else 
		return false;
	
	IplImage * pImgEmbed = cvLoadImage((const char *)(LPCTSTR)path, CV_LOAD_IMAGE_UNCHANGED);
	CDC* pDC = GetDlgItem(IDC_STATIC1) ->GetDC(); // 获得显示控件的 DC   
	HDC hDC = pDC ->GetSafeHdc(); // 获取 HDC(设备句柄) 来进行绘图操作   
	CRect rect;
	GetDlgItem(IDC_STATIC1) ->GetClientRect( &rect );   
	
	int rw = rect.right - rect.left; // 求出图片控件的宽和高   
	int rh = rect.bottom - rect.top;   
	int iw = pImgEmbed->width; // 读取图片的宽和高   
	int ih = pImgEmbed->height;   
	int tx = (int)(rw - iw)/2; // 使图片的显示位置正好在控件的正中   
	int ty = (int)(rh - ih)/2;   
	SetRect( rect, tx, ty, tx+iw, ty+ih );   
	//if(TraceFlag==FALSE) DrawFrame(pImgEmbed,TraceLocation);   
	CvvImage cimg;	
	cimg.CopyOf(pImgEmbed); // 复制图片   
	cimg.DrawToHDC( hDC, &rect ); // 将图片绘制到显示控件的指定区域内   
	cvWaitKey(50);   
	ReleaseDC( pDC );   
	
	GetDlgItem(IDC_STATIC1)->ShowWindow(SW_SHOW);
	UpdateData(FALSE);
	return true;
}

//opencv矩形,圆,直线和文字的画法
void showShape()
{
	IplImage *iplImage_tem = cvLoadImage("test.jpg"); 

	cvRectangle(iplImage_tem, pre_pt, cur_pt, cvScalar(GetBValue(stImageEditing.color),
		GetGValue(stImageEditing.color),GetRValue(stImageEditing.color),0), stImageEditing.iLineSize, 8, 0 ); 
	
	int radius = sqrt((float)((pre_pt.x - cur_pt.x)*(pre_pt.x - cur_pt.x)) + (float)((pre_pt.y - cur_pt.y)*(pre_pt.y - cur_pt.y)));
	cvCircle( iplImage_tem , pre_pt , radius , cvScalar(GetBValue(stImageEditing.color),GetGValue(stImageEditing.color),
		GetRValue(stImageEditing.color),0) , stImageEditing.iLineSize , CV_AA , 0 );
	
	cvLine(iplImage_tem , pre_pt , cur_pt , cvScalar(GetBValue(stImageEditing.color),GetGValue(stImageEditing.color),
		GetRValue(stImageEditing.color),0) , stImageEditing.iLineSize , 8 , 0);
	
	CvxText text("simhei.ttf");//初始化为黑体
	CHAR showThisText[100]={"测试文字内容"};
	CvScalar tem_scalar;
	tem_scalar.val[0] = stImageEditing.iFontSize+20;
	tem_scalar.val[1] = 0.5;
	tem_scalar.val[2] = 0.1;
	tem_scalar.val[3] = 0;
	text.restoreFont(tem_scalar);
	pre_pt.y -=10;
	text.putText(iplImage_tem, showThisText, pre_pt, CV_RGB(GetRValue(stImageEditing.color),GetGValue(stImageEditing.color),
		GetBValue(stImageEditing.color)));
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值