[問題] Opencv Cam影像顏色過濾後疊加的問題

看板C_and_CPP (C/C++)作者 (don't give up!)時間6年前 (2019/05/09 14:48), 編輯推噓0(007)
留言7則, 2人參與, 6年前最新討論串1/1
開發平台(Platform): (Ex: Win10, Linux, ...) Win10 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) VC++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) Opencv 3.1 問題(Question): 我利用inRange方式來過濾cam影像成功後,想要在此影像上繪製有顏色的正方形, 但是卻失敗 餵入的資料(Input): 預期的正確結果(Expected Output): 使用inRange方式過濾影像後,並在此影像上出現有顏色的正方形 錯誤結果(Wrong Output): 連同正方形也變成被過濾後的影像#include <cstdio> #include <cv.h> #include <highgui.h> #include<iostream> using namespace std; using namespace cv; int main() { VideoCapture cam; cam.open(1); cam.set(CV_CAP_PROP_FOURCC, CV_FOURCC('M', 'J', 'P', 'G')); cam.set(CV_CAP_PROP_FRAME_WIDTH, 640); cam.set(CV_CAP_PROP_FRAME_HEIGHT, 480); namedWindow("result", WINDOW_AUTOSIZE); while(1) { Mat frame; cam.read(frame); if (frame.empty()) break; Mat srcImage; srcImage = frame.clone(); Mat hsvImage; cvtColor(srcImage , hsvImage, CV_BGR2HSV); Mat hsvThresholdImage; inRange(hsvImage, Scalar(0, 0, 15), Scalar(360, 255, 175), hsvThresholdImage); Mat reszeImg; cv::resize(hsvThresholdImage, reszeImg, cv::Size(hsvThresholdImage.cols*2, hsvThresholdImage.rows * 2)); cv::rectangle(reszeImg, cv::Point(150, 40), cv::Point(250, 140), Scalar(255, 0, 0), -1); imshow("result", reszeImg); waitKey(50); } destroyWindow("result"); } 程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.120.21.9 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1557384519.A.9C9.html

05/09 15:27, 6年前 , 1F
你的hsvThresholdImage經過inRange格式變成8UC1,所以
05/09 15:27, 1F

05/09 15:27, 6年前 , 2F
出來的影像包括reszeImg都變黑白的
05/09 15:27, 2F

05/09 15:54, 6年前 , 3F
謝謝~我改成在cv::rectangle前一行加上
05/09 15:54, 3F

05/09 15:55, 6年前 , 4F
cv::cvtColor(reszeImg, reszeImg, CV_GRAY2BGR);
05/09 15:55, 4F

05/09 15:56, 6年前 , 5F
就可以了,不知道這樣方式正不正確
05/09 15:56, 5F

05/09 16:01, 6年前 , 6F
應該可以啦,opencv最麻煩的就是生出來的矩陣型別要自
05/09 16:01, 6F

05/09 16:01, 6年前 , 7F
己看
05/09 16:01, 7F
文章代碼(AID): #1Sqyr7d9 (C_and_CPP)
文章代碼(AID): #1Sqyr7d9 (C_and_CPP)