MFC HTML的img显示摄像头图像

本文介绍了一种使用OpenCV从摄像头捕获图像并将其转换为Base64编码的方法。通过这种方式,可以方便地在网络中传输图像数据。文章详细展示了如何初始化摄像头、读取图像、进行Base64编码并将编码后的字符串应用于网页元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    cv::VideoCapture vc;
	vc.open(0);
	cv::Mat temp;
	vc.read(temp);
	//cv::resize(temp,temp,cv::Size(320,240));
	
	vector<uchar> buff; 
	cv::imencode(".bmp" ,temp ,buff); 
	vc.release();
	uchar* dest=new uchar[buff.size()*2];

	uchar* bb=(uchar*)&buff[0];
	int len=buff.size();
	Base64Encode(dest,bb,len);
	CString b64=(char*)dest;
	CString szText="data:image/bmp;base64,"+b64;
	HRESULT hr = NULL;
	IHTMLElement* psrcElement;
	VARIANT value;
	hr = GetElement("bg", &psrcElement );
	if( SUCCEEDED( hr ))
	{
		value.bstrVal=szText.AllocSysString();//(BSTR)L"file:///c:/f.jpg";
		value.vt=VT_BSTR;
		hr = psrcElement->setAttribute( L"src",value );

	}
	delete[ ] dest;    

  

static const char g_sas8Base64digits[] =
	"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";


//编码
void Base64Encode(uchar *ps8Dest, const uchar *ps8Source, int s32InLen)
{
	if (ps8Dest==NULL || ps8Source==NULL || s32InLen<=0)
	{
		return;
	}

	for (; s32InLen >= 3; s32InLen -= 3)
	{
		*ps8Dest++ = g_sas8Base64digits[ps8Source[0] >> 2];
		*ps8Dest++ = g_sas8Base64digits[((ps8Source[0] << 4) & 0x30) | (ps8Source[1] >> 4)];
		*ps8Dest++ = g_sas8Base64digits[((ps8Source[1] << 2) & 0x3c) | (ps8Source[2] >> 6)];
		*ps8Dest++ = g_sas8Base64digits[ps8Source[2] & 0x3f];
		ps8Source += 3;
	}

	if (s32InLen > 0)
	{
		unsigned char fragment;

		*ps8Dest++ = g_sas8Base64digits[ps8Source[0] >> 2];
		fragment = (ps8Source[0] << 4) & 0x30;

		if (s32InLen > 1)
			fragment |= ps8Source[1] >> 4;

		*ps8Dest++ = g_sas8Base64digits[fragment];
		*ps8Dest++ = (s32InLen < 2) ? '=' : g_sas8Base64digits[(ps8Source[1] << 2) & 0x3c];
		*ps8Dest++ = '=';
	}

	*ps8Dest = '\0';
}

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值