釣魚網(wǎng)站開發(fā)百度百度一下百度
提示:文章寫完后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助文檔
文章目錄
- 前言
- 一、基本函數(shù)
- 1. cvtColor(src,tmp,COLOR_BGR2RGB);
- 2.在OpenCV和Qt中,轉(zhuǎn)換`cv::Mat`到`QImage
- 3.Canny(tmp,dst,30,255);
- 4.dst =matframe.clone();
- 5.videocapture =new VideoCapture(0, cv::CAP_V4L2);
- 二、攝像頭參數(shù)
- 1攝像頭參數(shù)opencv
- 函數(shù)cvGetCaptureProperty獲得攝像頭或者視頻文件的指定屬性。
- 2.讀入數(shù)據(jù)
- 總結(jié)
前言
用于記錄圖像處理的基礎(chǔ)知識(shí)
一、基本函數(shù)
1. cvtColor(src,tmp,COLOR_BGR2RGB);
cvtColor(src, tmp, COLOR_BGR2RGB)
是OpenCV庫(kù)中的函數(shù),用于將圖像從BGR顏色空間轉(zhuǎn)換為RGB顏色空間。在這個(gè)函數(shù)調(diào)用中,src
是輸入圖像,通常是BGR格式的,tmp
是輸出圖像,將保存轉(zhuǎn)換后的RGB圖像,COLOR_BGR2RGB
是轉(zhuǎn)換的標(biāo)志。
如果代碼運(yùn)行正確,tmp
將包含源圖像src
的RGB版本。你可以使用OpenCV的其他函數(shù)來顯示或保存這個(gè)圖像。這個(gè)函數(shù)通常在處理從攝像頭或圖像文件讀取的圖像時(shí)使用,因?yàn)檫@些圖像通常是以BGR格式存儲(chǔ)的,而一些其他的圖像處理庫(kù)或函數(shù)可能需要RGB格式的圖像。
需要注意的是,src
和tmp
必須是有效的圖像對(duì)象,且src
必須是BGR格式的。如果src
不是BGR格式或tmp
不是有效的圖像對(duì)象,函數(shù)將無法正確工作。
cvtColor
是OpenCV庫(kù)中的一個(gè)函數(shù),用于將圖像從一種顏色空間轉(zhuǎn)換到另一種顏色空間。常見的顏色空間包括BGR、RGB、HSV、GRAY等。cvtColor
函數(shù)可以在這些顏色空間之間進(jìn)行轉(zhuǎn)換,以滿足不同的圖像處理需求。
函數(shù)的原型如下:
void cvtColor(InputArray src, OutputArray dst, int code, int dstCn = 0)
參數(shù)說明:
src
:輸入圖像,通常是一個(gè)多通道的彩色圖像。dst
:輸出圖像,將保存轉(zhuǎn)換后的圖像。code
:轉(zhuǎn)換類型,指定從源顏色空間到目標(biāo)顏色空間的轉(zhuǎn)換方式。例如,COLOR_BGR2RGB
表示從BGR顏色空間轉(zhuǎn)換為RGB顏色空間。dstCn
:輸出圖像的通道數(shù),默認(rèn)為0,表示自動(dòng)根據(jù)源圖像的通道數(shù)和轉(zhuǎn)換類型確定輸出圖像的通道數(shù)。
通過調(diào)用cvtColor
函數(shù),可以方便地將圖像從一種顏色空間轉(zhuǎn)換為另一種顏色空間,以滿足不同的圖像處理需求。
2.在OpenCV和Qt中,轉(zhuǎn)換cv::Mat
到`QImage
在OpenCV和Qt中,轉(zhuǎn)換cv::Mat
到QImage
可以通過以下方式實(shí)現(xiàn):
cv::Mat mat = ...; // Assume mat is your source Mat
QImage qimage;// Convert Mat to QImage
qimage = QImage((const unsigned char *)(mat.data), mat.cols, mat.rows, mat.step, QImage::Format_RGB888);// If mat is not continuous, you need to copy it to a new Mat and then convert it to QImage.
if(mat.isContinuous())
{qimage = qimage.copy();
}
注意,上述代碼假設(shè)你的cv::Mat
是3通道的,且數(shù)據(jù)類型為8位無符號(hào)整型(即CV_8UC3
),這是最常見的圖像格式。如果你的cv::Mat
有不同的通道數(shù)或數(shù)據(jù)類型,你需要調(diào)整代碼以匹配你的具體情況。例如,如果你的圖像是灰度圖像(單通道),你可能需要使用QImage::Format_Grayscale8
而不是QImage::Format_RGB888
。
另外,這段代碼也假設(shè)你的cv::Mat
的數(shù)據(jù)是連續(xù)的。如果不是,你需要先復(fù)制到一個(gè)新的cv::Mat
中,然后再轉(zhuǎn)換為QImage
。這是因?yàn)?code>QImage需要連續(xù)的數(shù)據(jù)。你可以通過調(diào)用cv::Mat::isContinuous
來檢查數(shù)據(jù)是否連續(xù)。
3.Canny(tmp,dst,30,255);
這段代碼是使用OpenCV庫(kù)中的Canny函數(shù)來進(jìn)行邊緣檢測(cè)。函數(shù)的參數(shù)包括輸入圖像(tmp),輸出圖像(dst),以及兩個(gè)閾值(30和255)。
Canny邊緣檢測(cè)算法使用兩個(gè)閾值來檢測(cè)圖像中的邊緣。低閾值(30)用于檢測(cè)弱邊緣,高閾值(255)用于檢測(cè)強(qiáng)邊緣。在這個(gè)過程中,還會(huì)使用一些其他的技巧和算法來優(yōu)化邊緣檢測(cè)的結(jié)果。
總體來說,這段代碼的作用是從輸入圖像(tmp)中檢測(cè)出邊緣,并將結(jié)果保存到輸出圖像(dst)中。
4.dst =matframe.clone();
這段代碼是使用OpenCV庫(kù)中的clone
函數(shù)來復(fù)制圖像。具體來說,它將matframe
圖像復(fù)制到一個(gè)新的圖像變量dst
中。
clone
函數(shù)創(chuàng)建一個(gè)與原始圖像完全相同的副本,包括所有的像素值、通道數(shù)、數(shù)據(jù)類型等。這意味著dst
圖像與matframe
圖像完全相同,任何對(duì)dst
圖像的修改都不會(huì)影響到matframe
圖像。
總之,這段代碼的作用是創(chuàng)建一個(gè)與matframe
完全相同的副本,并將其保存到dst
中。
5.videocapture =new VideoCapture(0, cv::CAP_V4L2);
videocapture =new VideoCapture(0, cv::CAP_V4L2);//ok
videocapture =new VideoCapture(“/dev/video0”);打開會(huì)報(bào)錯(cuò)
videocapture =new VideoCapture(0); //ok
[ WARN:0] global ../modules/videoio/src/cap_gstreamer.cpp (1824) handleMessage OpenCV | GStreamer warning: Embedded video playback halted; module source reported: Could not read from resource.
[ WARN:0] global ../modules/videoio/src/cap_gstreamer.cpp (914) open OpenCV | GStreamer warning: unable to start pipeline
[ WARN:0] global ../modules/videoio/src/cap_gstreamer.cpp (501) isPipelinePlaying OpenCV | GStreamer warning: GStreamer: pipeline have not been created
無法打開攝像頭
videocapture =new VideoCapture(0, cv::CAP_V4L2);
這段代碼是使用OpenCV庫(kù)中的VideoCapture
類來創(chuàng)建一個(gè)視頻捕獲對(duì)象,用于從攝像頭或視頻文件中捕獲視頻幀。
具體來說,VideoCapture(0, cv::CAP_V4L2)
創(chuàng)建一個(gè)視頻捕獲對(duì)象,并使用V4L2(Video4Linux2)API從索引為0的攝像頭設(shè)備中捕獲視頻。V4L2是一種在Linux操作系統(tǒng)中用于訪問攝像頭設(shè)備的接口。
VideoCapture
對(duì)象創(chuàng)建后,可以使用其成員函數(shù)(如read
、open
等)來控制視頻捕獲的過程,例如讀取視頻幀、設(shè)置分辨率和幀率等。
總之,這段代碼的作用是創(chuàng)建一個(gè)VideoCapture
對(duì)象,用于從索引為0的攝像頭設(shè)備中捕獲視頻,并使用V4L2 API進(jìn)行訪問。
二、攝像頭參數(shù)
1攝像頭參數(shù)opencv
capture.set(CAP_PROP_FRAME_WIDTH, 1080);//寬度
capture.set(CAP_PROP_FRAME_HEIGHT, 960);//高度
capture.set(CAP_PROP_FPS, 30);//幀數(shù)
capture.set(CAP_PROP_BRIGHTNESS, 1);//亮度 1
capture.set(CAP_PROP_CONTRAST,40);//對(duì)比度 40
capture.set(CAP_PROP_SATURATION, 50);//飽和度 50
capture.set(CAP_PROP_HUE, 50);//色調(diào) 50
capture.set(CAP_PROP_EXPOSURE, 50);//曝光 50
函數(shù)cvGetCaptureProperty獲得攝像頭或者視頻文件的指定屬性。
2.讀入數(shù)據(jù)
代碼如下(示例):
data = pd.read_csv('https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())
該處使用的url網(wǎng)絡(luò)請(qǐng)求的數(shù)據(jù)。
總結(jié)
不斷更新,項(xiàng)目過程中的基礎(chǔ)知識(shí)