OpenCV輪廓檢測,計算物體旋轉角度

2021-08-02 06:23:21 字數 3714 閱讀 6605

效果還是有點問題的,希望大家共同**一下

// 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 定義...