效果還是有點問題的,希望大家共同**一下
// findrotation-angle.cpp : 定義控制台應用程式的入口點。
//// findcontours.cpp : 定義控制台應用程式的入口點。
//#include "stdafx.h"
#include #include #include #include #include #include #pragma comment(lib,"opencv_core2410d.lib")
#pragma comment(lib,"opencv_highgui2410d.lib")
#pragma comment(lib,"opencv_imgproc2410d.lib")
#define pi 3.1415926
using namespace std;
using namespace cv;
int hough_line(mat src)
//顯示原始圖
imshow("【原始圖】", srcimage);
//邊緣檢測後的圖
imshow("【邊緣檢測後的圖】", midimage);
//顯示效果圖
imshow("【效果圖】", dstimage);
// //霍夫變換進行直線檢測,此處使用的是probabilistic hough transform(cv::houghlinesp)而不是standard hough transform(cv::houghlines)
cv::mat result_line(image.size(),cv_8u,cv::scalar(255));
result_line = result.clone();
hough_line(result_line);
//mat tempimage;
//進行邊緣檢測和轉化為灰度圖
//canny(result_line, tempimage, 50, 200, 3);//進行一此canny邊緣檢測
//imshow("canny",tempimage);
//waitkey(0);
//cvtcolor(tempimage,result_line, cv_gray2bgr);//轉化邊緣檢測後的圖為灰度圖
vectorlines;
cv::houghlinesp(result_line,lines,1,cv_pi/180,80,50,10);
for(int i = 0; i < lines.size(); i++)
cv::namedwindow("line");
cv::imshow("line",result_line);
//waitkey(0);
/ //
//std::vector>::const_iterator itc_rec= contours.begin();
//while (itc_rec!=contours.end())
// //cv::namedwindow("some shape descriptors");
//cv::imshow("some shape descriptors",result);
cvbox2d end_rage2d;
cvpoint2d32f rectpoint[4];
cvmemstorage *storage = cvcreatememstorage(0); //開闢記憶體空間
cvseq* contour = null; //cvseq型別 存放檢測到的影象輪廓邊緣所有的畫素值,座標值特徵的結構體以鍊錶形式
for(; contour; contour = contour->h_next) //如果contour不為空,表示找到乙個以上輪廓,這樣寫法只顯示乙個輪廓
//如改為for(; contour; contour = contour->h_next) 就可以同時顯示多個輪廓
cvboxpoints(end_rage2d,rectpoint);
std::cout <
cv::imshow("lalalal",result);
cv::waitkey();
return 0;
}
這個是原來實現的**的部落格文章: OpenCV輪廓檢測
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!opencv入門指南 第三篇canny邊緣檢測 中介紹了邊緣檢測,本篇介紹輪廓檢測,輪廓檢測的原理通俗的說就是掏空內部點,比如原圖中有3 3的矩形點。那麼就可以將中間的那一點去掉。在opencv中使用輪廓檢測是非常方便。直接使用cvfindcont...
OpenCV 閉合輪廓檢測
這個好像是骨頭什麼的,但是要求輪廓閉合,於是對進行一下膨脹操作,再次檢測輪廓就好了。a closed contour.cpp 定義控制台應用程式的入口點。include stdafx.h findrotation angle.cpp 定義控制台應用程式的入口點。findcontours.cpp 定義...
OpenCV 閉合輪廓檢測
這個好像是骨頭什麼的,但是要求輪廓閉合,於是對進行一下膨脹操作,再次檢測輪廓就好了。a closed contour.cpp 定義控制台應用程式的入口點。include stdafx.h findrotation angle.cpp 定義控制台應用程式的入口點。findcontours.cpp 定義...