2017-06-14 230 views
-1

我加載小圖像。如何在OpenCv C++中將圖像添加到圖像中

Mat extra; 
extra = imread("Korona.jpg"); 

我從相機加載圖像,我嘗試添加我的圖像。

VideoCapture cap; 
Mat frame; 
cap >> frame; 
cv::Rect roi(cv::Point(0, 0), cv::Size(110, 110)); 
cv::Mat destinationROI = img(roi); 
extra.copyTo(destinationROI(cv::Rect(0, 0, extra.cols, extra.rows))); 

但沒有成功,並且有這樣的錯誤:

OpenCV Error: Assertion failed (0 <= roi.x && 0 <= roi.width && roi.x + roi.width <= m.cols && 0 <= roi.y && 0 <= roi.height && roi.y + roi.height <= m.rows) in cv::Mat::Mat, file C:\build\master_winpack-build-win64-vc14\opencv\modules\core\src\matrix.cpp, line 522

任何想法?謝謝。

+1

該錯誤表明您的'roi'尺寸大於源'Mat'讀取的JPG大小是多少? – EdChum

+0

extra.copyTo(img(cv :: Rect(5,5,11,11)));我嘗試這個,但有這個錯誤penCV錯誤:斷言失敗(scn == 3 || scn == 4)在cv :: cvtColor,文件C:\ build \ master_winpack-build-win64-vc14 \ opencv \ modules \ imgproc \ src \ color.cpp,行9716 – Masa

+0

什麼是'img'?該聲明不在您的代碼中... – Rama

回答

1
if(roi.x >= 0 && roi.y >= 0 && roi.width + roi.x < input_frame.cols && roi.height + roi.y < input_frame.rows) 
{ 
    // your code 

} 
else 
    return -1; 

發現類似的問題,拉着代碼herehere

看你的代碼,看起來你不打開你捕捉

VideoCapture cap(0); //for a webcam 
Mat frame; 
if(cap.isOpened()) 
    cap >> frame; 
else 
    throw; 
cv::Rect roi(cv::Point(0, 0), cv::Size(110, 110)); 
cv::Mat destinationROI = frame(roi); 
extra.copyTo(destinationROI(cv::Rect(0, 0, extra.cols, extra.rows))); 

退房OpenCV的上VideoCapture的documentation使確保你正確地做到了。