之前在VS上用CImage可以做,因為要移植到一個VC6開發環境的程式上,所以用了VC6。結果發現,VC6沒有CImage的支持庫,求教一下該怎么做?做相機開發的,用的佳能的edsdk。
uj5u.com熱心網友回復:
使用OpenCV庫
uj5u.com熱心網友回復:
cimage是atl庫里的,把vs中這部分的庫單獨提出來,放到vc6里試試,如果不行就只能用位圖來處理圖片了,不知道你是要用cimage做些什么事情~uj5u.com熱心網友回復:
打開攝像頭,然后獲取視頻流,保存成檔案.uj5u.com熱心網友回復:
cimage 用的是 GDI+ ,uj5u.com熱心網友回復:
求教一下把資料流轉換成位圖應該怎么做?能不能給個代碼示例,
uj5u.com熱心網友回復:
6.0也可以用CImagehttps://zhidao.baidu.com/question/90869560.html
uj5u.com熱心網友回復:
資料流是只以二進制方式加載的資料流么
FILE *fp=NULL;
int ret = fopen_s(&fp,"D:\\11.bmp","rb");
if(fp==0)
{
return ;
}
BITMAPFILEHEADER fileheader={0};
fread(&fileheader,sizeof(fileheader),1,fp);
if(fileheader.bfType!=0x4D42)
{
fclose(fp);
return ;
}
BITMAPINFOHEADER head;
fread(&head,sizeof(BITMAPINFOHEADER),1,fp);
long bmpWidth = head.biWidth;
long bmpHeight = head.biHeight;
WORD biBitCount = head.biBitCount;
if(biBitCount != 24)
{
::AfxMessageBox(_T("請選擇24位位圖!"));
fclose(fp);
return ;
}
int totalSize = (bmpWidth *biBitCount/8+3)/4*4*bmpHeight;
BYTE *pBmpBuf = new BYTE[totalSize];
size_t size = 0;
while(true)
{
int iret = fread(&pBmpBuf[size],1,1,fp);
if(iret == 0)
break;
size = size + iret;
}
fclose(fp);
int i,j;
CClientDC dc(this);
int pitch=bmpWidth%4;
for(i=0;i<bmpHeight;i++)
{
int realPitch=i*pitch;
for(j=0;j<bmpWidth;j++)
{
dc.SetPixel(j,i,RGB(
pBmpBuf[(i*bmpWidth+j)*3+2+realPitch],
pBmpBuf[(i*bmpWidth+j)*3+1+realPitch],
pBmpBuf[(i*bmpWidth+j)*3+realPitch]));
}
}
delete [] pBmpBuf; pBmpBuf = NULL;
return ;
uj5u.com熱心網友回復:
cimage是atl庫里的,把vs中這部分的庫單獨提出來,放到vc6里試試,如果不行就只能用位圖來處理圖片了,不知道你是要用cimage做些什么事情~
求教一下把資料流轉換成位圖應該怎么做?能不能給個代碼示例,
資料流是只以二進制方式加載的資料流么
FILE *fp=NULL;
int ret = fopen_s(&fp,"D:\\11.bmp","rb");
if(fp==0)
{
return ;
}
BITMAPFILEHEADER fileheader={0};
fread(&fileheader,sizeof(fileheader),1,fp);
if(fileheader.bfType!=0x4D42)
{
fclose(fp);
return ;
}
BITMAPINFOHEADER head;
fread(&head,sizeof(BITMAPINFOHEADER),1,fp);
long bmpWidth = head.biWidth;
long bmpHeight = head.biHeight;
WORD biBitCount = head.biBitCount;
if(biBitCount != 24)
{
::AfxMessageBox(_T("請選擇24位位圖!"));
fclose(fp);
return ;
}
int totalSize = (bmpWidth *biBitCount/8+3)/4*4*bmpHeight;
BYTE *pBmpBuf = new BYTE[totalSize];
size_t size = 0;
while(true)
{
int iret = fread(&pBmpBuf[size],1,1,fp);
if(iret == 0)
break;
size = size + iret;
}
fclose(fp);
int i,j;
CClientDC dc(this);
int pitch=bmpWidth%4;
for(i=0;i<bmpHeight;i++)
{
int realPitch=i*pitch;
for(j=0;j<bmpWidth;j++)
{
dc.SetPixel(j,i,RGB(
pBmpBuf[(i*bmpWidth+j)*3+2+realPitch],
pBmpBuf[(i*bmpWidth+j)*3+1+realPitch],
pBmpBuf[(i*bmpWidth+j)*3+realPitch]));
}
}
delete [] pBmpBuf; pBmpBuf = NULL;
return ;
才發現數碼相機采集的資料流格式是JPEG的,郁悶
uj5u.com熱心網友回復:
cimage是atl庫里的,把vs中這部分的庫單獨提出來,放到vc6里試試,如果不行就只能用位圖來處理圖片了,不知道你是要用cimage做些什么事情~
求教一下把資料流轉換成位圖應該怎么做?能不能給個代碼示例,
資料流是只以二進制方式加載的資料流么
FILE *fp=NULL;
int ret = fopen_s(&fp,"D:\\11.bmp","rb");
if(fp==0)
{
return ;
}
BITMAPFILEHEADER fileheader={0};
fread(&fileheader,sizeof(fileheader),1,fp);
if(fileheader.bfType!=0x4D42)
{
fclose(fp);
return ;
}
BITMAPINFOHEADER head;
fread(&head,sizeof(BITMAPINFOHEADER),1,fp);
long bmpWidth = head.biWidth;
long bmpHeight = head.biHeight;
WORD biBitCount = head.biBitCount;
if(biBitCount != 24)
{
::AfxMessageBox(_T("請選擇24位位圖!"));
fclose(fp);
return ;
}
int totalSize = (bmpWidth *biBitCount/8+3)/4*4*bmpHeight;
BYTE *pBmpBuf = new BYTE[totalSize];
size_t size = 0;
while(true)
{
int iret = fread(&pBmpBuf[size],1,1,fp);
if(iret == 0)
break;
size = size + iret;
}
fclose(fp);
int i,j;
CClientDC dc(this);
int pitch=bmpWidth%4;
for(i=0;i<bmpHeight;i++)
{
int realPitch=i*pitch;
for(j=0;j<bmpWidth;j++)
{
dc.SetPixel(j,i,RGB(
pBmpBuf[(i*bmpWidth+j)*3+2+realPitch],
pBmpBuf[(i*bmpWidth+j)*3+1+realPitch],
pBmpBuf[(i*bmpWidth+j)*3+realPitch]));
}
}
delete [] pBmpBuf; pBmpBuf = NULL;
return ;
才發現數碼相機采集的資料流格式是JPEG的,郁悶
那就自己轉一下唄,網上有很多例子吧~
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/105206.html
標籤:基礎類
上一篇:HttpEndRequest(hRequest, NULL, 0, 0)回傳ERROR_INTERNET_FORCE_RETRY
