[問題] OpenCV 未寫入的 Mat 被連帶改變(已解決)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VS2010 Pro
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
OpenCV 2.3.3
問題(Question):
未寫入的影像陣列 Mat 被改變了
餵入的資料(Input):
彩色影像
預期的正確結果(Expected Output):
秀出一張過濾色 + 另一張未過濾彩色圖
錯誤結果(Wrong Output):
兩張都被過濾
程式碼(Code):(請善用置底文網頁, 記得排版)
Img=cv::imread(FileName,1);
ImgResult=Img;
/*過濾紅色(BGR排列)*/
for(int i=0;i<Img.rows;i++){
for(int j=0;j<Img.cols;j++){
if(Img.at<cv::Vec3b>(i,j)[2] >
(Img.at<cv::Vec3b>(i,j)[0] + Img.at<cv::Vec3b>(i,j)[1]))
{
ImgResult.at<cv::Vec3b>(i,j)[2]=255;
}
else
{
ImgResult.at<cv::Vec3b>(i,j)[0]=0;
ImgResult.at<cv::Vec3b>(i,j)[1]=0;
ImgResult.at<cv::Vec3b>(i,j)[2]=0;
}
}
}
cv::imshow("Img",Img);
cv::imshow("ImgResult",ImgResult);
cv::waitKey(0);
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.224.55.75
※ 編輯: deo2000 來自: 61.224.55.75 (05/18 22:00)
→
05/18 22:01, , 1F
05/18 22:01, 1F
但是只有這一段程式碼會連帶處理耶!
後面的都不會了,怎麼會這樣?
→
05/18 22:02, , 2F
05/18 22:02, 2F
感謝!
給我這個提示去找ref manual
發現 Img.copyTo(ImgResult); 也可以
※ 編輯: deo2000 來自: 61.224.55.75 (05/18 22:32)
→
05/18 23:15, , 3F
05/18 23:15, 3F
→
05/18 23:15, , 4F
05/18 23:15, 4F
→
05/18 23:16, , 5F
05/18 23:16, 5F
→
05/18 23:17, , 6F
05/18 23:17, 6F
因為我找了一整個晚上,沒有發現適合的 function
只有 cv::inRange 可以設定上下界做 band pass,不能自由的做其他邏輯運算
※ 編輯: deo2000 來自: 61.224.55.75 (05/18 23:24)
※ 編輯: deo2000 來自: 61.224.55.75 (05/19 01:12)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章