网站开发产品需求说明,小网站代码,义乌兼职网站建设,什么是oa系统软件在学习opencv的时候#xff0c;对一张照片#xff0c;需要标注照片上物体的不规则轮廓。
如图: 使用opencv进行物体的轮廓处理#xff0c;关键在于对照片的理解#xff0c;前期的照片处理的越好最后调用api出来的结果就越接近理想值。
提取照片中物体分如下三步#xff…在学习opencv的时候对一张照片需要标注照片上物体的不规则轮廓。
如图: 使用opencv进行物体的轮廓处理关键在于对照片的理解前期的照片处理的越好最后调用api出来的结果就越接近理想值。
提取照片中物体分如下三步
图像去噪高斯模糊二值化去除噪点形态学操作去除较小的噪点进行轮廓查找
#include opencv2/opencv.hpp
#include iostream
#include math.husing namespace cv;
using namespace std;
Mat src, dst, gray_src;
char input_image[] input image;
char output_image[] output image;int main(int argc, char ** argv){src imread(case6.jpg);if (src.empty()){printf(colud not load image ..\n);return -1;}namedWindow(input_image, CV_WINDOW_AUTOSIZE);namedWindow(output_image, CV_WINDOW_AUTOSIZE);imshow(input_image, src);// 均值降噪Mat blurImg;GaussianBlur(src, blurImg, Size(15, 15), 0, 0);imshow(input image, src);// 二值化Mat binary;cvtColor(blurImg, gray_src, COLOR_BGR2GRAY);threshold(gray_src, binary, 0, 255, THRESH_BINARY | THRESH_TRIANGLE);imshow(binary, binary);// 闭操作进行联通物体内部Mat morphImage;Mat kernel getStructuringElement(MORPH_RECT, Size(3, 3), Point(-1, -1));morphologyEx(binary, morphImage, MORPH_CLOSE, kernel, Point(-1, -1), 2);imshow(morphology, morphImage);// 获取最大轮廓vectorvectorPoint contours;vectorVec4i hireachy;findContours(morphImage, contours, hireachy, CV_RETR_EXTERNAL, CHAIN_APPROX_SIMPLE, Point());Mat connImage Mat::zeros(src.size(), CV_8UC3);for (size_t t 0; t contours.size(); t){Rect rect boundingRect(contours[t]);if (rect.width src.cols / 2) continue;if (rect.width src.cols - 20) continue;double area contourArea(contours[t]);double len arcLength(contours[t], true);drawContours(connImage, contours, t, Scalar(0, 0, 255), 1, 8, hireachy);printf(area of star could : %f \n, area);printf(lenght of star could : %f \n, len);}imshow(output_image, connImage);waitKey(0);return 0;
} 二值化 形态学操作 最终的轮廓