我是C 的新手,試圖轉換這段代碼,使其能夠拍攝影像而不是視頻。 這是用OpenCV進行人臉檢測。我知道對Mat來說,我需要傳遞一張圖片而不是視頻,只是不知道到底該怎么做。如果有任何幫助,我們將不勝感激。
謝謝。
謝謝你。
int main()
{
VideoCapture捕獲。
//在0位置打開捕獲物件(網路攝像頭的默認位置)
capture.open(0)。
//設定捕獲幀的高度和寬度。
capture.set(CV_CAP_PROP_FRAME_WIDTH,320)。
capture.set(CV_CAP_PROP_FRAME_HEIGHT,480)。
Mat cameraFeed;
SkinDetector mySkinDetector;
Mat skinMat;
//啟動一個無限回圈,網路攝像頭的畫面被復制到cameraFeed矩陣中。
//我們所有的操作都將在這個回圈中進行。
while(1){
//將影像存盤到矩陣。
capture.read(cameraFeed)。
//顯示當前影像
imshow("Original Image", cameraFeed)。
skinMat= mySkinDetector.getSkin(cameraFeed)。
imshow("Skin Image",skinMat);
waitKey(30)。
}
return 0;
}
uj5u.com熱心網友回復:
你必須改變整個代碼。在這段代碼中,你正在使用視頻中的連續影像,使用一個while回圈。使用單張圖片為
Mat cameraFeed = imread("/path/to/image.jpg"/span>) 。
imshow("Original Image", cameraFeed)。
Mat skinMat= mySkinDetector.getSkin(cameraFeed)。
imshow("Skin Image",skinMat);
waitKey(30)。
uj5u.com熱心網友回復:
我不確定你說的'傳遞一個影像'是什么意思。 如果你不是從視頻源讀取,而是想從磁盤上的檔案讀取,那么請洗掉以下代碼:
VideoCapture capture;
//在0位置打開捕獲物件(網路攝像頭的默認位置)。
capture.open(0)。
//設定捕獲幀的高度和寬度。
capture.set(CV_CAP_PROP_FRAME_WIDTH,320)。
capture.set(CV_CAP_PROP_FRAME_HEIGHT,480)。
然后將Mat cameraFeed改為:
Mat cameraFeed = imread("/path/to/image.jpg"/span>) 。
或者你可以直接創建一個函式并將你的圖片傳給它。
void detectSkin(Mat img)
{
SkinDetector mySkinDetector;
Mat skinMat;
//show the current image
imshow("Original Image"/span>,img)。
skinMat= mySkinDetector.getSkin(img);
imshow("Skin Image",skinMat);
//改為3000毫秒,這樣你就有時間看到它了。。
waitKey(3000)。
}
int main()
{
Mat img = imread("myimage.jpg"/span>)。
detectSkin(img);
return 0;
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/328642.html
標籤:
上一篇:如何按順序列印一個字典的所有值?
下一篇:從動態型別中獲取實際的模型型別
