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

作者: spidermomo (( ̄︿ ̄)很好= =)   2019-05-09 14:48:37
開發平台(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):(請善用置底文網頁, 記得排版,禁止使用圖檔)
作者: nh60211as   2019-05-09 15:27:00
你的hsvThresholdImage經過inRange格式變成8UC1,所以出來的影像包括reszeImg都變黑白的
作者: spidermomo (( ̄︿ ̄)很好= =)   2019-05-09 15:54:00
謝謝~我改成在cv::rectangle前一行加上cv::cvtColor(reszeImg, reszeImg, CV_GRAY2BGR);就可以了,不知道這樣方式正不正確
作者: nh60211as   2019-05-09 16:01:00
應該可以啦,opencv最麻煩的就是生出來的矩陣型別要自己看

Links booklink

Contact Us: admin [ a t ] ucptt.com