gpt4 book ai didi

c++ - 这个opencv代码有什么问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:49:46 54 4
gpt4 key购买 nike

我正在尝试编写一个代码,在其中我可以检测除正方形之外的不同几何形状,我发现:this answer here答案是用 python 给出的,我试过用 c++ 编写,但我的程序崩溃了,知道我做错了什么:

int main (){
cv::Mat img = cv::imread("src.jpg",0);
cv::Mat image ;

std::vector<std::vector<cv::Point>> contours;
//std::vector<std::vector<cv::Point2f>> hiararchy;

cv::threshold(img,img,127,255,CV_THRESH_BINARY_INV);
cv::findContours(img,contours,/*hiararchy,*/CV_RETR_EXTERNAL,CV_RETR_CCOMP );
std::vector<cv::Point2f> approx;
for ( int i=0; i<contours.size();i++){
cv::approxPolyDP(cv::Mat(contours[i]),approx,cv::arcLength(cv::Mat(contours[i]),true)*0.02,true);

}

cv::waitKey(0);

return 0;

}

我已经调试了程序,它在 cv::approxPolyDP 函数中崩溃了!

**更新**在 C. Canberk Ba​​cı 的建议下,我更改了 for l

for ( int i=0; i<contours.size();i++){
cv::Mat m(contours[i]);
cv::approxPolyDP(m,approx,cv::arcLength(m,true)*0.02,true);

}

但变化不大预先感谢您的帮助!

最佳答案

明白了:

int main (){
cv::Mat img = cv::imread("src.jpg",0);
cv::Mat image ;

std::vector<std::vector<cv::Point>> contours;
//std::vector<std::vector<cv::Point2f>> hiararchy;

cv::threshold(img,img,127,255,CV_THRESH_BINARY_INV);
cv::findContours(img,contours,/*hiararchy,*/CV_RETR_EXTERNAL,CV_RETR_CCOMP );
std::vector<cv::Point> approx; // this should be 1D
for ( int i=0; i<contours.size();i++){

cv::approxPolyDP(cv::Mat(contours[i]),approx,(cv::arcLength(cv::Mat(contours[i]),true)*0.02),true);

}

cv::waitKey(0);

再次感谢您的帮助

关于c++ - 这个opencv代码有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17716255/

54 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com