亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

OpenCV圖像處理之常見的圖像灰度變換

 更新時(shí)間:2019年07月08日 09:56:19   作者:S大幕  
這篇文章主要介紹了OpenCV圖像處理之常見的圖像灰度變換,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1.灰度線性變換

圖像的灰度線性變換是圖像灰度變換的一種,圖像的灰度變換通過建立灰度映射來調(diào)整源圖像的灰度,從而達(dá)到圖像增強(qiáng)的目的。灰度映射通常是用灰度變換曲線來進(jìn)行表示。通常來說,它是將圖像的像素值通過指定的線性函數(shù)進(jìn)行變換,以此來增強(qiáng)或者來減弱圖像的灰度,灰度線性變換的函數(shù)就是常見的線性函數(shù)。

g(x, y) = k · f(x, y) + d

設(shè)源圖像的灰度值為x,則進(jìn)行灰度線性變換后的灰度值為y = kx + b (0<=y<=255),下面分別來討論k的取值變化時(shí)線性變換的不同效果

(1).|k|>1時(shí)

當(dāng)k>1時(shí),可以用來增加圖像的對(duì)比度,圖像的像素值在進(jìn)行變換后全部都線性方法,增強(qiáng)了整體的顯示效果,且經(jīng)過這種變換后,圖像的整體對(duì)比度明顯增大,在灰度圖中的體現(xiàn)就是變換后的灰度圖明顯被拉伸了。

(2).|k|=1時(shí)

當(dāng)k=1時(shí),這種情況下常用來調(diào)節(jié)圖像的亮度,亮度的調(diào)節(jié)就是讓圖像的各個(gè)像素值都增加或是減少一定量。在這種情況下可以通過改變d值來達(dá)到增加或者是減少圖像亮度的目的。因?yàn)楫?dāng)k=1,只改變d值時(shí),只有圖像的亮度被改變了,d>0時(shí),變換曲線整體發(fā)生上移,圖像的亮度增加,對(duì)應(yīng)的直方圖整體向右側(cè)移動(dòng),d<0時(shí),變換曲線整體下移,圖像的亮度降低,對(duì)應(yīng)的直方圖發(fā)生水平左移。

(3).0<|k|<1時(shí)

此時(shí)變換的效果正好與k>1時(shí)相反,即圖像的整體對(duì)比度和效果都被削減了,對(duì)應(yīng)的直方圖會(huì)被集中在一段區(qū)域上。k值越小,圖像的灰度分布也就越窄,圖像看起來也就顯得越是灰暗。

(4).k<0時(shí)

在這種情況下,源圖像的灰度會(huì)發(fā)生反轉(zhuǎn),也就是原圖像中較亮的區(qū)域會(huì)變暗,而較暗的區(qū)域?qū)?huì)變量。特別的,此時(shí)我們令k = -1,d = 255,可以令圖像實(shí)現(xiàn)完全反轉(zhuǎn)的效果。對(duì)應(yīng)的直方圖也會(huì)發(fā)生相應(yīng)的變化。

相應(yīng)的程序試下如下:

//實(shí)現(xiàn)圖像的灰度線性變化
#include <iostream>
#include <opencv2\core\core.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\imgproc\imgproc.hpp>
 
using namespace std;
using namespace cv;
 
int main()
{
	Mat srcImg = imread("1234.jpg");
	if (!srcImg.data)
	{
		cout << "讀入圖片失敗" << endl;
		return -1;
	}
	imshow("原圖像", srcImg);
	double k, b;
	cout << "請(qǐng)輸入k和b值:";
	cin >> k >> b;
	int RowsNum = srcImg.rows;
	int ColsNum = srcImg.cols;
	Mat dstImg(srcImg.size(), srcImg.type());
	//進(jìn)行遍歷圖像像素,對(duì)每個(gè)像素進(jìn)行相應(yīng)的線性變換
	for (int i = 0; i < RowsNum; i++)
	{
		for (int j = 0; j < ColsNum; j++)
		{
			//c為遍歷圖像的三個(gè)通道
			for (int c = 0; c < 3; c++)
			{
				//使用at操作符,防止越界
				dstImg.at<Vec3b>(i, j)[c] = saturate_cast<uchar>
					(k* (srcImg.at<Vec3b>(i, j)[c]) + b);
 
			}
		}
	}
	imshow("線性變換后的圖像", dstImg);
	waitKey();
	return 0;
}

當(dāng)k=1.2,b=50時(shí) 執(zhí)行程序的效果如下:


2.灰度對(duì)數(shù)變換

對(duì)數(shù)變換的基本形式為


其中,b是一個(gè)常數(shù),用來控制曲線的彎曲程度,其中,b越小越靠近y軸,b越大越靠近x軸。表達(dá)式中的x是原始圖像中的像素值,y是變換后的像素值,可以分析出,當(dāng)函數(shù)自變量較低時(shí),曲線的斜率很大,而自變量較高時(shí),曲線的斜率變得很小。正是因?yàn)閷?duì)數(shù)變換具有這種壓縮數(shù)據(jù)的性質(zhì),使得它能夠?qū)崿F(xiàn)圖像灰度拓展和壓縮的功能。即對(duì)數(shù)變換可以拓展低灰度值而壓縮高灰度級(jí)值,讓圖像的灰度分布更加符合人眼的視覺特征。例如進(jìn)行傅里葉變換后的圖像,圖像中心絕對(duì)高灰度值的存在壓縮了低灰度部分的動(dòng)態(tài)范圍,所以無法在現(xiàn)實(shí)的時(shí)候便顯出原油的細(xì)節(jié)。這時(shí)就需要使用一個(gè)對(duì)數(shù)變換來對(duì)結(jié)果圖像進(jìn)行修正,經(jīng)過適當(dāng)?shù)奶幚砗?,原始圖像中低灰度區(qū)域的對(duì)比度將會(huì)增加,暗部細(xì)節(jié)將被增強(qiáng)。 

使用程序進(jìn)行實(shí)現(xiàn)如下:

//實(shí)現(xiàn)圖像的對(duì)數(shù)變換,作用是壓縮圖像較亮區(qū)域的動(dòng)態(tài)范圍
//使用不同的方法實(shí)現(xiàn)圖像的對(duì)數(shù)變換
//基本公式為 y = clog(1+r)
#include <iostream>
#include <opencv2\core\core.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\imgproc\imgproc.hpp>
 
using namespace std;
using namespace cv;
 
int main()
{
	Mat srcImage = imread("1234.jpg",0);
	if (!srcImage.data)
	{
		cout << "讀入圖片錯(cuò)誤~" << endl;
		return -1;
	}
	double c;
	cout << "請(qǐng)輸入常數(shù)c:";
	cin >> c;
	Mat srcImage1(srcImage);
	imshow("原圖像", srcImage);
	Mat dstImage1(srcImage.size(), srcImage.type());
	Mat dstImage2 = dstImage1.clone();
	Mat dstImage3 = dstImage1.clone();
	//使用第一種方法進(jìn)行對(duì)數(shù)變換,對(duì)圖像整體進(jìn)行操作
	//首先計(jì)算 1+r,注意,是對(duì)每一個(gè)像素點(diǎn)都進(jìn)行加1操作
	add(srcImage, Scalar(1.0), srcImage1);
	//轉(zhuǎn)換為32位的浮點(diǎn)數(shù)
	srcImage1.convertTo(srcImage1, CV_32F);
	//計(jì)算log(1+r)
	log(srcImage1, dstImage1);
	dstImage1 = c * dstImage1;
	//進(jìn)行歸一化處理
	normalize(dstImage1, dstImage1, 0, 255, NORM_MINMAX);
	//convertScaleAbs:先縮放元素再取絕對(duì)值,最后轉(zhuǎn)換格式為8bit型
	//在這里不具有縮放功能,作用僅為將格式轉(zhuǎn)換為8bit型
	convertScaleAbs(dstImage1, dstImage1);
	imshow("對(duì)數(shù)變換圖像1", dstImage1);
	/////////////////////////////////////////////////////////////
	//使用第二種方法進(jìn)行圖像的對(duì)數(shù)變換,對(duì)圖像的像素進(jìn)行遍歷
	double temp = 0.0;
	for (int i = 0; i < srcImage.rows; i++)
	{
		for (int j = 0; j < srcImage.cols; j++)
		{
			temp = (double)srcImage.at<uchar>(i, j);
			temp = c*log((double)(1 + temp));
			dstImage2.at<uchar>(i, j) = saturate_cast<uchar>(temp);
		}
	}
	//進(jìn)行歸一化處理
	normalize(dstImage2, dstImage2, 0, 255, NORM_MINMAX);
	convertScaleAbs(dstImage2, dstImage2);
	imshow("對(duì)數(shù)變換圖像2", dstImage2);
	//////////////////////////////////////////////////////////////
	//使用第三種方法進(jìn)行圖像的對(duì)數(shù)變換
	//首先進(jìn)行圖像類型轉(zhuǎn)換
	srcImage.convertTo(dstImage3, CV_32F);
	//圖像矩陣元素進(jìn)行加1操作
	dstImage3 = dstImage3 + 1;
	//圖像對(duì)數(shù)操作
	cv::log(dstImage3, dstImage3);
	dstImage3 = c*dstImage3;
	//圖像進(jìn)行歸一化操作
	normalize(dstImage3, dstImage3, 0, 255, NORM_MINMAX);
	convertScaleAbs(dstImage3, dstImage3);
	imshow("對(duì)數(shù)變換圖像3", dstImage3);
	
	waitKey();
	return 0;
}

當(dāng)c取1時(shí),效果如下:


3.灰度冪次變換與Gamma校正

基于冪次變換的Gamma校正是圖像處理中一種非常重要的非線性變換,它與對(duì)數(shù)變換相反,它是對(duì)輸入圖像的灰度值進(jìn)行指數(shù)變換,進(jìn)而校正亮度上的偏差。通常Gamma校正長(zhǎng)應(yīng)用于拓展暗調(diào)的細(xì)節(jié)。通常來講,當(dāng)Gamma校正的值大于1時(shí),圖像的高光部分被壓縮而暗調(diào)部分被擴(kuò)展;當(dāng)Gamma校正的值小于1時(shí),相反的,圖像的高光部分被擴(kuò)展而暗調(diào)備份被壓縮。

通常情況下,最簡(jiǎn)單的Gamma校正可以用下面的冪函數(shù)來表示:


其中A是常數(shù),函數(shù)的輸入和輸出都是非負(fù)數(shù),當(dāng)r=1時(shí),為直線變換;當(dāng)r<1時(shí),低灰度區(qū)域動(dòng)態(tài)范圍擴(kuò)大,進(jìn)而圖像對(duì)比度增強(qiáng),高灰度值區(qū)域動(dòng)態(tài)范圍減小,圖像對(duì)比度降低,圖像整體灰度值增大,此時(shí)與圖像的對(duì)數(shù)變換類似。當(dāng)r>11時(shí),低灰度區(qū)域的動(dòng)態(tài)范圍減小進(jìn)而對(duì)比度降低,高灰度區(qū)域動(dòng)態(tài)范圍擴(kuò)大,圖像的對(duì)比度提升,圖像的整體灰度值變小,Gamma校正主要應(yīng)用在圖像增強(qiáng)。目標(biāo)檢測(cè)和圖像分析等不同的領(lǐng)域。

總之,r<1的冪函數(shù)的作用是提高圖像暗區(qū)域中的對(duì)比度,而降低亮區(qū)域的對(duì)比度;r>1的冪函數(shù)的作用是提高圖像中亮區(qū)域的對(duì)比度,降低圖像中按區(qū)域的對(duì)比度。

所以,對(duì)于灰度級(jí)整體偏暗的圖像,可以使用r<1的冪函數(shù)增大動(dòng)態(tài)范圍。對(duì)于灰度級(jí)整體偏亮的圖像,可以使用r>1的冪函數(shù)增大灰度動(dòng)態(tài)范圍。

下面使用程序進(jìn)行簡(jiǎn)單的Gamma變換:

//冪次變換與Gamma灰度校正
#include <iostream>
#include <opencv2\core\core.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\imgproc\imgproc.hpp>
 
using namespace std;
using namespace cv;
 
Mat GammaTrans(Mat &srcImag, float parameter);
 
 
int main()
{
	Mat srcImage = imread("1234.jpg", 0);
	if (!srcImage.data)
	{
		cout << "讀入圖片失敗!" << endl;
		return -1;
	}
	imshow("原始圖像", srcImage);
	//初始化幾組不同的參數(shù)
	float parameter1 = 0.3;
	float parameter2 = 3.0;
	Mat dstImage1 = GammaTrans(srcImage, parameter1);
	imshow("參數(shù)1下的Gamma變換", dstImage1);
	Mat dstImage2 = GammaTrans(srcImage, parameter2);
	imshow("參數(shù)2下的Gamma變換", dstImage2);
	waitKey();
	return 0;
}
 
Mat GammaTrans(Mat &srcImag, float parameter)
{
	//建立查表文件LUT
	unsigned char LUT[256];
	for (int i = 0; i < 256; i++)
	{
		//Gamma變換定義
		LUT[i] = saturate_cast<uchar>(pow((float)(i / 255.0), parameter)*255.0f);
	}
	Mat dstImage = srcImag.clone();
	//輸入圖像為單通道時(shí),直接進(jìn)行Gamma變換
	if (srcImag.channels() == 1)
	{
		MatIterator_<uchar>iterator = dstImage.begin<uchar>();
		MatIterator_<uchar>iteratorEnd = dstImage.end<uchar>();
		for (; iterator != iteratorEnd; iterator++)
			*iterator = LUT[(*iterator)];
	}
	else
	{
		//輸入通道為3通道時(shí),需要對(duì)每個(gè)通道分別進(jìn)行變換
		MatIterator_<Vec3b>iterator = dstImage.begin<Vec3b>();
		MatIterator_<Vec3b>iteratorEnd = dstImage.end<Vec3b>();
		//通過查表進(jìn)行轉(zhuǎn)換
		for (; iterator!=iteratorEnd; iterator++)
		{
			(*iterator)[0] = LUT[((*iterator)[0])];
			(*iterator)[1] = LUT[((*iterator)[1])];
			(*iterator)[2] = LUT[((*iterator)[2])];
		}
	}
	return dstImage;
}

4.分段線性變換

分段線性變換也是一種重要的灰度級(jí)變換。對(duì)于曝光不足,曝光過度和傳感器動(dòng)態(tài)范圍都會(huì)造成圖像表現(xiàn)出低對(duì)比度的特征。分段線性變換的作用是提高圖像灰度級(jí)的動(dòng)態(tài)范圍。通常來說,通過階段一定比例的最亮像素和最暗像素,并使得中間亮度像素占有整個(gè)灰度級(jí),因而能夠提高圖像的全局對(duì)比度。在這種情況下,通常稱之為對(duì)比度拉伸,直方圖裁剪,目前廣泛的應(yīng)用于圖像后期處理中。通常使用分段函數(shù)來實(shí)現(xiàn)。下面先簡(jiǎn)單介紹一下對(duì)比度拉伸技術(shù)。

圖像的對(duì)比度拉伸是通過擴(kuò)展圖像灰度級(jí)動(dòng)態(tài)范圍來實(shí)現(xiàn)的,它可以擴(kuò)展對(duì)應(yīng)的全部灰度范圍。圖像的低對(duì)比度一般是由于圖像圖像成像亮度不夠、成像元器件參數(shù)限制或設(shè)置不當(dāng)造成的。提高圖像的對(duì)比度可以增強(qiáng)圖像各個(gè)區(qū)域的對(duì)比效果,對(duì)圖像中感興趣的區(qū)域進(jìn)行增強(qiáng),而對(duì)圖像中不感興趣的區(qū)域進(jìn)行相應(yīng)的抑制作用。對(duì)比度拉伸是圖像增強(qiáng)中的重要的技術(shù)之一。這里設(shè)點(diǎn)(x1,y1)與(x2,y2)是分段線性函數(shù)中折點(diǎn)位置坐標(biāo)。常見的三段式分段線性變換函數(shù)的公式如下:


其中k1=y1/x1,k2=(y2-y1)/(x2-x1),k3=(255-y2)/(255-y1)

需要注意的是,分段線性一般要求函數(shù)是單調(diào)遞增的,目的是防止圖像中的灰度級(jí)不滿足一一映射。

分段的灰度拉伸技術(shù)可以結(jié)合直方圖處理技術(shù),從而更加靈活地控制輸出圖像的直方圖分布,對(duì)特定感興趣的區(qū)域進(jìn)行對(duì)比度調(diào)整,增強(qiáng)圖像畫質(zhì)。對(duì)于圖像灰度集中在較暗的區(qū)域,可以采用斜率k<0來進(jìn)行灰度拉伸擴(kuò)展;對(duì)于圖像中較亮的區(qū)域,可以采用修了k<0來進(jìn)行灰度拉伸壓縮。

實(shí)現(xiàn)代碼如下:

//實(shí)現(xiàn)對(duì)比度拉伸
#include <iostream>
#include <opencv2\core\core.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\imgproc\imgproc.hpp>
 
using namespace cv;
using namespace std;
 
int main()
{
	Mat srcImage = imread("1234.jpg",0);
	if (!srcImage.data)
	{
		cout << "讀入圖片錯(cuò)誤!" << endl;
		return -1;
	}
	imshow("原始圖片", srcImage);
	Mat dstImage(srcImage);
	int rowsNum = dstImage.rows;
	int colsNum = dstImage.cols;
	//圖像連續(xù)性判斷
	if (dstImage.isContinuous())
	{
		colsNum = colsNum*rowsNum;
		rowsNum = 1;
	}
	//圖像指針操作
	uchar *pDataMat;
	int pixMax = 0, pixMin = 255;
	//計(jì)算圖像像素的最大值和最小值
	for (int j = 0; j < rowsNum; j++)
	{
		pDataMat = dstImage.ptr<uchar>(j);
		for (int i = 0; i < colsNum; i++)
		{
			if (pDataMat[i]>pixMax)
				pixMax = pDataMat[i];
			if (pDataMat[i] < pixMin)
				pixMin = pDataMat[i];
		}
	}
 
	//進(jìn)行對(duì)比度拉伸
	for (int j = 0; j < rowsNum; j++)
	{
		pDataMat = dstImage.ptr<uchar>(j);
		for (int i = 0; i < colsNum; i++)
		{
			pDataMat[i] = (pDataMat[i] - pixMin) * 255 / (pixMax - pixMin);
		}
	}
	imshow("對(duì)比度拉伸后的圖像", dstImage);
	waitKey();
	return 0;
}

執(zhí)行后顯示效果如下


5.灰度級(jí)分層

灰度級(jí)分層,也叫做灰度級(jí)切片,作用是在整個(gè)灰度級(jí)范圍內(nèi)將設(shè)定窗口內(nèi)的灰度和其他部分分開。從而突出圖像中具有一定灰度范圍的區(qū)域。大體上來說,灰度級(jí)分層有兩種類型,即:清除背景和保持背景。清除背景是將灰度窗口內(nèi)的像素賦值為較亮的值,而其他部分賦值為較暗的值。經(jīng)過這樣的處理后產(chǎn)生的是二值圖像,原圖像的細(xì)節(jié)將全部丟失。而保持背景指的是將灰度窗口內(nèi)的像素賦值為較亮的值,而其他部分的灰度保持不變。

相關(guān)代碼如下:

//實(shí)現(xiàn)灰度級(jí)分層
#include <iostream>
#include <opencv2\core\core.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\imgproc\imgproc.hpp>
 
using namespace cv;
using namespace std;
 
int main()
{
	Mat srcImage = imread("2345.jpg", 0);
	if (!srcImage.data)
	{
		cout << "讀入圖片錯(cuò)誤!" << endl;
		return 0;
	}
	imshow("原圖像", srcImage);
	Mat dstImage = srcImage.clone();
	int rowsNum = dstImage.rows;
	int colsNum = dstImage.cols;
	//圖像連續(xù)性判斷
	if (dstImage.isContinuous())
	{
		colsNum *= rowsNum;
		rowsNum = 1;
	}
	//圖像指針操作
	uchar *pDataMat;
	int controlMin = 50;
	int controlMax = 150;
	//計(jì)算圖像的灰度級(jí)分層
	for (int j = 0; j < rowsNum; j++)
	{
		pDataMat = dstImage.ptr<uchar>(j);
		for (int i = 0; i < colsNum; i++)
		{
			//第一種方法,二值映射
			if (pDataMat[i]>controlMin)
				pDataMat[i] = 255;
			else
				pDataMat[i] = 0;
			//第二種方法:區(qū)域映射
			//if (pDataMat[i] > controlMax && pDataMat[j] < controlMin)
			//	pDataMat[i] = controlMax;
		}
	}
	imshow("灰度分層后的圖像", dstImage);
	waitKey();
	return 0;
}

執(zhí)行后效果圖如下:


以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C語(yǔ)言手寫集合List的示例代碼

    C語(yǔ)言手寫集合List的示例代碼

    數(shù)組長(zhǎng)度是固定的,那么在很多時(shí)候我們并不知道到底有多少數(shù)據(jù)需要存儲(chǔ),這時(shí)候我么就需要一個(gè)可變長(zhǎng)度的數(shù)組來進(jìn)行存儲(chǔ),在C語(yǔ)言中需要我們自己進(jìn)行定義,我們稱為集合。本文將用C語(yǔ)言實(shí)現(xiàn)手寫集合,需要的可以參考一下
    2022-08-08
  • C++ 中引用與指針的區(qū)別實(shí)例詳解

    C++ 中引用與指針的區(qū)別實(shí)例詳解

    這篇文章主要介紹了C++ 中引用與指針的區(qū)別實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • C++任意線程通過hwnd實(shí)現(xiàn)將操作發(fā)送到UI線程執(zhí)行

    C++任意線程通過hwnd實(shí)現(xiàn)將操作發(fā)送到UI線程執(zhí)行

    做Windows界面開發(fā)時(shí),經(jīng)常需要在多線程環(huán)境中將操作拋到主線程執(zhí)行,下面我們就來學(xué)習(xí)一下如何在不需要重新定義消息以及接收消息的情況下實(shí)現(xiàn)這一要求,感興趣的可以了解下
    2024-03-03
  • C++鏈表類的封裝詳情介紹

    C++鏈表類的封裝詳情介紹

    這篇文章主要介紹了C++鏈表類的封裝,文章基于C++的相關(guān)資料展開主題的詳細(xì)內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-04-04
  • 一起來學(xué)習(xí)C語(yǔ)言的輸入和輸出

    一起來學(xué)習(xí)C語(yǔ)言的輸入和輸出

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言的輸入和輸出,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • C語(yǔ)言中的時(shí)間函數(shù)clock()和time()你都了解嗎

    C語(yǔ)言中的時(shí)間函數(shù)clock()和time()你都了解嗎

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言中的時(shí)間函數(shù)clock()和time(),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • C語(yǔ)言詳細(xì)講解strcpy strcat strcmp函數(shù)的模擬實(shí)現(xiàn)

    C語(yǔ)言詳細(xì)講解strcpy strcat strcmp函數(shù)的模擬實(shí)現(xiàn)

    這篇文章主要介紹了怎樣用C語(yǔ)言模擬實(shí)現(xiàn)strcpy與strcat和strcmp函數(shù),strcpy()函數(shù)是C語(yǔ)言中的一個(gè)復(fù)制字符串的庫(kù)函數(shù),strcat()函數(shù)的功能是實(shí)現(xiàn)字符串的拼接,strcmp()函數(shù)作用是比較字符串str1和str2是否相同
    2022-05-05
  • C++開發(fā)的Redis數(shù)據(jù)導(dǎo)入工具優(yōu)化

    C++開發(fā)的Redis數(shù)據(jù)導(dǎo)入工具優(yōu)化

    這篇文章主要介紹了C++開發(fā)的Redis數(shù)據(jù)導(dǎo)入工具優(yōu)化方法的相關(guān)資料,需要的朋友可以參考下
    2015-07-07
  • OpenGL實(shí)現(xiàn)中點(diǎn)劃線法

    OpenGL實(shí)現(xiàn)中點(diǎn)劃線法

    這篇文章主要為大家詳細(xì)介紹了OpenGL實(shí)現(xiàn)中點(diǎn)劃線法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • C++中std::construct()與std::destroy()的使用

    C++中std::construct()與std::destroy()的使用

    std::construct()和std::destroy()是C++ STL中的函數(shù)模板,用于在已分配的存儲(chǔ)區(qū)域中構(gòu)造或銷毀對(duì)象,本文主要介紹了C++中std::construct()與std::destroy()的使用,感興趣的可以了解一下
    2024-02-02

最新評(píng)論