darknet預測分類動態庫:採集轉換爲darknet格式

採集中的數據存儲:

 for (int j = 0; j < nHeight; j++)		
 {
    for (int i = 0; i < nWidth; i++)			
	{    		    	
		buff[j*nWidth + i] = pOCTData[j * nRealWidth + i];
     }
 }	

需要做的轉換:

for (int i = 0; i < m_wid; ++i)
		{
			for (int j = 0; j < m_height; ++j)
			{
				if (isSimulate)
				{
					num++;
					m_tmpImgData[i][j] = num;
				}
				else
				{
					m_tmpImgData[i][j] = (int)(pOctdata->_pbyOCTDataBuffer[i * m_height + j]);
				}

			}
		}


		for (int i = 0; i < m_height; ++i)
		{
			for (int j = 0; j < m_wid; ++j)
			{
				int iPos = j * c;
				int k = i * m_wid * c + iPos;
				if (c == 3)
				{
					mImgData[h][k] = (unsigned char)m_tmpImgData[j][m_height - i - 1];
					mImgData[h][k + 1] = (unsigned char)m_tmpImgData[j][m_height - i - 1];
					mImgData[h][k + 2] = (unsigned char)m_tmpImgData[j][m_height - i - 1];
				} 
				else
				{
					mImgData[h][k] = (unsigned char)m_tmpImgData[j][m_height - i - 1];
				}
				
			}

		}

將上面採集轉darknet存儲格式代碼,兩個循環合併成一個循環:

for (int i = 0; i < m_height; ++i)
{
	for (int j = 0; j < m_wid; ++j)
		{
			int iPos = j * c;
			int k = i * m_wid * c + iPos;
			if (c == 3)
			{
					
				mImgData[h][k] = (unsigned char)pOctdata->_pbyOCTDataBuffer[j * m_height + m_height - i - 1];
				mImgData[h][k + 1] = (unsigned char)pOctdata->_pbyOCTDataBuffer[j * m_height + m_height - i - 1];
				mImgData[h][k + 2] = (unsigned char)pOctdata->_pbyOCTDataBuffer[j * m_height + m_height - i - 1];
			} 
			else
			{
				mImgData[h][k] = (unsigned char)m_tmpImgData[j][m_height - i - 1];
			}
				
		}

}

將上面的代碼GPU加速:

__global__ void MatChannelsOneToThree(unsigned char* dst,unsigned char* src,int w,int h,int c)
{
    int i = blockIdx.x * blockDim.x + threadIdx.x; 
    int j = blockIdx.y * blockDim.y + threadIdx.y; 
	int k = blockIdx.z * blockDim.z + threadIdx.z;
    if (i<w&&j<h&&k<c) 
	{
	   int iPos = i * c;
	   int m = j * w * c + iPos;
	   dst[m+k] = src[i * h + h - j - 1];
	}
}

 

發佈了373 篇原創文章 · 獲贊 151 · 訪問量 33萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章