读取位图文件的步骤

 

LBITMAPINFO m_pbmInfo;

LPBITMAPINFOHEADER m_pbmInfoHeader;

void LoadBitmapFile(const char* fileName)

{

//打开位图文件

     CFile file(fileName,CFile::modeRead);

//将位图文件头读入内存    

 BITMAPFILEHEADER bmFileHeader;

file.Read((void*)&bmFileHeader,sizeof(bmFileHeader));

//检查是否为位图

if(bmpFileHeader.bfType!=0x4d42)

{

afxMessageBox("not a bitmap file!");

}

else

{

DWORD fileLength=file.GetLength();

DWORD dibSize=fileLength-sizeof(bmFileHeader);// 位图文件的大小减去头文件的大小

//分配全局内存

BYTE* pDib=(BYTE*)GlobalAllocPtr(GMEM_MOVEABLE,dibSize);

pDib=new BYTE[dibSize];

file.Read(pDib,dibSize);

file.Close();

//初始化指向结构BITMAPINFO和BITMAPINFOHEADER的指针

m_pbmInfo=(LPBITMAPINFO)pDib;

m_pbmInfoHeader=(LPBITMAPINFOHEADER)pDib;

//获得位图的大小

m_pbmInfoHeader->biSizeImage=GetDibSizeImage();//该函数在下面讲解,就是获取像素总和

m_pDibBits=pDib+m_pBmInfoHeader->biSize;//让m_pDibBits指向位图真正的第一位,非位图头。

}

}

 

DWORD GetDibSizeImage()

{

if(m_pbmInfoHeader->biSizeImage==0)

{

//单行字节数,即宽度

DWORD byteWidth=(DWORD)GetDibWidth();

DWORD height=(DWORD)GetDibHeight();

DWORD imageSize=byteWidht*height;

return imageSize;

}

else

return m_pbmInfoHeader->biSizeImage;

}

转载于:https://www.cnblogs.com/yangxiaoluck/archive/2011/06/21/2085835.html

### 使用Python进行高频词语的网络分析 为了实现高频词语的网络分析,可以采用多种库和技术组合。具体来说,在构建这样的分析框架时,主要依赖于`jieba`用于中文分词[^3],以及`networkx`和`matplotlib`来进行图结构创建和社会网络可视化[^2]。 #### 数据预处理阶段 在开始之前,确保已准备好待分析的数据集,并完成必要的清理工作,如去除HTML标签、转换为小写字母等操作。接着加载停用词表以过滤掉无意义词汇: ```python import jieba from collections import Counter import networkx as nx import matplotlib.pyplot as plt def load_stopwords(file_path): with open(file_path, 'r', encoding='utf-8') as f: stopwords = set([line.strip() for line in f]) return stopwords files = glob.glob('/path/to/text/files/*.txt') corpus = [get_content(x) for x in files] # 加载停用词列表 stop_words_set = load_stopwords('/root/experiment/datas/stop_words.utf8') # 对文档集合中的每一个文本执行分词并移除停用词 split_words_list = [[word for word in jieba.cut(text) if word not in stop_words_set and len(word)>1] for text in corpus] ``` 上述代码片段展示了如何读取多个文本文件的内容,并对其进行初步处理——即通过`jieba`进行精确模式下的分词,同时排除那些存在于自定义停用词表内的词条。 #### 构建共现矩阵与图形表示 一旦获得了经过清洗后的词汇序列,下一步就是建立各个单词之间的关联关系。这里可以通过计算两两之间共同出现的概率来衡量其紧密程度;也可以基于窗口滑动机制统计相邻位置上的配对情况。之后,利用这些权重信息初始化一个加权有向图对象: ```python co_occurrence_matrix = {} window_size = 5 # 定义上下文窗口大小 for words in split_words_list: for i, w1 in enumerate(words): window = words[max(i-window_size//2, 0):min(i+window_size//2+1, len(words))] for w2 in window: if w1 != w2: co_occurrence_matrix.setdefault((w1,w2), []).append(w2) G=nx.Graph() for (node1,node2), weight in ((k,v) for k,v in co_occurrence_matrix.items()): G.add_edge(node1, node2, weight=len(weight)) pos = nx.spring_layout(G) plt.figure(figsize=(10,7)) nx.draw_networkx_nodes(G,pos,alpha=0.7,node_color="blue",node_size=[v*100 for v in dict(nx.degree(G)).values()]) nx.draw_networkx_edges(G,pos,width=.5,alpha=0.5) nx.draw_networkx_labels(G,pos,font_size=9) plt.title("Co-occurrence Network of High-frequency Words") plt.show() ``` 这段脚本首先遍历所有可能存在的二元组(bigram),记录下它们各自的相遇次数作为边界的属性之一。随后调用了NetworkX库函数绘制出最终形成的节点连接布局图,从而直观反映出哪些术语间存在较强的相关性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值