所以基本上我试图使用Canny边缘检测和颜色阈值来检测绿色目标。如下所示的原始图像是我试图检测的一个例子。
原始图片:
应用canny边缘检测后,就会出现这种情况。
CannyEdge图片:
从这里我想只显示绿色矩形目标,所以我使用inRange函数并输入从该图片中某个绿色目标的GIMP获得的HSV范围。然而,我将Hue值除以2,因为我听说OpenCV使用Hue值0 - 180不像GIMP使用0 - 360并且仍然以inRange函数的黑色输出图像结束....
如何只显示绿色矩形?
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
Mat ORIGINAL_img;
Mat HSV_img, FINAL_img, MASKED_img, BLURRED_img;
Mat dst, detectededges;
int main() {
ORIGINAL_img = imread("straight7.jpg", CV_LOAD_IMAGE_COLOR);
cvtColor(ORIGINAL_img, HSV_img, COLOR_BGR2HSV);
inRange(HSV_img, Scalar(80, 150, 15), Scalar(100, 255, 60), MASKED_img);
blur(MASKED_img, BLURRED_img, Size(3,3));
Canny(BLURRED_img, detectededges, 50, 20, 3);
dst = Scalar::all(0);
HSV_img.copyTo(dst, detectededges);
imwrite("cannyoutput.jpg", dst);
imwrite("colormaskoutput.jpg", MASKED_img);
//imshow("color", HSV_img);
waitKey(0);
return 0;
}