將圖像進行分塊(筆記)

以下代碼實現了將圖像分成4*4塊,然後進行操作:

int main()
{
	char* imgPath = "..\\img2.jpg";

	 //[1] 獲取圖片數據,並轉化成灰度圖
	Mat img = imread(imgPath);
	if (NULL == img.data)
	{
		printf("read img error!\n");
		exit(1);
	}
	Mat imgGray;
	cvtColor(img, imgGray, CV_BGR2GRAY);
	// [2] 獲取圖像相關信息
	int nHeight = imgGray.rows;
	int nWidth = imgGray.cols;
	unsigned char* pData = imgGray.data;
	// [3] 將圖像分成4*4塊
	int p = 0, q = 0;   //用來標識塊索引
	for (int ss = 0; ss < 16; ss++)
	{
		p = ss / 4; //行索引
		q = ss % 4; //列索引
		for (int i = nHeight*p / 4; i < nHeight*(p + 1) / 4; i++)
		{
			for (int j = nWidth*q / 4; j < nWidth*(q + 1) / 4;j++)
			{
				pData[i*nWidth + j] = ss * 255 / 16;  //每一塊顯示一種顏色,用於可視化驗證
			}
		}	
	}
	//[4] 顯示圖像
	namedWindow("img");
	imshow("img", imgGray);
	waitKey(0);
	return 0;
}

結果顯示:



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章