问题描述
我正在尝试向并行编程转变,这是我在网上找到的代码,我是c ++中使用opencv2的新手,有人知道如何将此代码转换为新的开放cv代码吗?
//Next do the Canney and Hough transforms on the smaller image
IplImage* src;
src=cvLoadImage(fileName,0);
IplImage* dst = cvCreateImage( cvGetSize(src),8,1 );
IplImage* color_dst = cvCreateImage( cvGetSize(src),3 );
IplImage* final_dst = cvCreateImage( cvGetSize(src),1 );
CvMemStorage* storage = cvCreateMemStorage(0);
CvSeq* lines = 0;
int i;
cvCanny( src,dst,50,200,3 );
cvCvtColor( dst,color_dst,CV_GRAY2BGR );
lines = cvhoughlines2( dst,storage,CV_HOUGH_STANDARD,1,CV_PI/180,100,0 );
for( i = 0; i < MIN(lines->total,100); i++ )
{
float* line = (float*)cvGetSeqElem(lines,i);
float rho = line[0];
float theta = line[1];
CvPoint pt1,pt2;
double a = cos(theta),b = sin(theta);
double x0 = a*rho,y0 = b*rho;
pt1.x = cvRound(x0 + 1000*(-b));
pt1.y = cvRound(y0 + 1000*(a));
pt2.x = cvRound(x0 - 1000*(-b));
pt2.y = cvRound(y0 - 1000*(a));
cvLine( color_dst,pt1,pt2,CV_RGB(255,0),2,8 );
}
cvCvtColor(color_dst,final_dst,CV_BGR2GRAY);
cvSaveImage(fileName,final_dst);
我尝试了一下,但我认为我失败了
//Next do the Hough transforms on the smaller image
cv::Mat src = cv::imread(fileName);
cv::Mat dst;
cv::Mat color_dst;
cv::Mat final_dst;
//IplImage src;
//src=cvLoadImage(fileName,0);
//IplImage* dst = cvCreateImage( cvGetSize(src),1 );
//IplImage* color_dst = cvCreateImage( cvGetSize(src),3 );
//IplImage* final_dst = cvCreateImage( cvGetSize(src),1 );
//CvMemStorage* storage = cvCreateMemStorage(0);
cv::namedWindow(CW_IMG_ORIGINAL,cv::WINDOW_norMAL);
cv::resizeWindow(CW_IMG_ORIGINAL,1280,720);
cv::moveWindow(CW_IMG_ORIGINAL,10,10);
cv::Mat lines;
//CvSeq* lines = 0;
//cv::Seq<linesTp>;
int i;
cvhoughlines2;
cv::Canny( src,3 );
cv::cvtColor( dst,CV_GRAY2BGR );
cv::houghlines( dst,lines,0 );
for( i = 0; i < 100; i++ )
{
//float* line = (float*)cv::getSeqElem(lines,i);
float* line = lines.at(i);
float rho = line[0];
float theta = line[1];
cv::Point pt1,y0 = b*rho;
pt1.x = cvRound(x0 + 1000*(-b));
pt1.y = cvRound(y0 + 1000*(a));
pt2.x = cvRound(x0 - 1000*(-b));
pt2.y = cvRound(y0 - 1000*(a));
cv::line(color_dst,8);
}
cv::cvtColor(color_dst,CV_BGR2GRAY);
cv::imshow(CW_IMG_ORIGINAL,final_dst);
我失败了,因为我不知道如何使用cvhoughlines2将hough行实现到该行中以进行公式的迭代,但是cvhoughlines2需要作为cvArr插入,但是cvLoadImage当前在opencv4.1.2中不起作用,因此我无法使用IplImage和cvLoadImage运行此代码。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)