sách gpt4 ai đã đi

Thuật toán C++ để chạy lệnh sau khi phát hiện hình vuông

In lại 作者:太空宇宙 更新时间:2023-11-03 23:02:55 26 4
mua khóa gpt4 Nike

我有用于检测正方形的 opencv 代码。现在我想在检测正方形后,代码运行另一个命令。

Mã như sau:

#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
#include "math.h"
#include
#include
#include
#include

sử dụng không gian tên std;

double angle( CvPoint* pt1, CvPoint* pt2, CvPoint* pt0 )
{
double dx1 = pt1->x - pt0->x;
double dy1 = pt1->y - pt0->y;
double dx2 = pt2->x - pt0->x;
double dy2 = pt2->y - pt0->y;
return (dx1*dx2 + dy1*dy2)/sqrt((dx1*dx1 + dy1*dy1)*(dx2*dx2 + dy2*dy2) + 1e-10);
} // angle

IplImage* findSquares4( IplImage* img, CvMemStorage* storage )
{
double s = 0, t = 0;
int sdetect =0, sqdetect = 0,sqt = 0;
CvSeq* contours;
CvSeq* result;
CvSeq* squares = cvCreateSeq( 0, sizeof( CvSeq), sizeof( CvPoint), storage );

IplImage* cny = cvCreateImage(cvGetSize(img), 8, 1);

cvCanny(img, cny, 5, 100, 3);

cvNamedWindow("canny",CV_WINDOW_AUTOSIZE);
cvShowImage("canny",cny);

cvFindContours( cny, storage, &contours, sizeof( CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint( 0, 0) );

while( contours )
{
result = cvApproxPoly( contours,
sizeof( CvContour),
storage,
CV_POLY_APPROX_DP,
cvContourPerimeter( contours)*0.02, 0 );

if( result->total == 4 &&
fabs( cvContourArea( result, CV_WHOLE_SEQ)) > 1000 &&
cvCheckContourConvexity( result) )
{
s = 0;
for( int i = 2; i < 5; i++ )
{
{
t = fabs( angle(
( CvPoint*)cvGetSeqElem( result, i ),
( CvPoint*)cvGetSeqElem( result, i-2 ),
( CvPoint*)cvGetSeqElem( result, i-1 )));
s = s > t ? s : t;
cout << "s = " << s<< endl;
cout << "t = " << t<< endl;
}
} // for
if( s < 0.3 )
for( int i = 0; i < 4; i++ )
cvSeqPush( squares,
( CvPoint*)cvGetSeqElem( result, i ));
} // if

contours = contours->h_next;

} // while
if ((squares->total/4) = 1)
{
sdetect = 1;
} / /if
khác
{
sdetect = 2;
sleep(0.5);
} // else

if (sqdetect != sdetect)
{
sqdetect=sdetect;
switch(sqdetect)
{
case 0 : system(NULL) ; break;
case 2 : cout<< "no "<< endl; break;
case 1 : system("./ambil1.sh"); break;
} // switch
} // if
sdetect = 0;

cout<<"Persegi : "<< squares->total/4 <<>

cvReleaseMemStorage(&storage);
cvClearSeq(squares);

} // findSquares4

void drawSquares(IplImage *img, CvSeq* squares )
{
CvFont font;
cvInitFont( &font, CV_FONT_HERSHEY_SIMPLEX, 0.4f, 0.4f, 0,1, 8 );
int i,j,sdetect,sqdetect = 0;
CvSeqReader reader;
cvStartReadSeq( squares, &reader, 0 );

for( i = 0; i < squares->total; i += 4 )
{
j++;
CvPoint pt[4], *rect = pt;
int count = 4;

// read 4 vertices
memcpy( pt, reader.ptr, squares->elem_size );
CV_NEXT_SEQ_ELEM( squares->elem_size, reader );
memcpy( pt + 1, reader.ptr, squares->elem_size );
CV_NEXT_SEQ_ELEM( squares->elem_size, reader );
memcpy( pt + 2, reader.ptr, squares->elem_size );
CV_NEXT_SEQ_ELEM( squares->elem_size, reader );
memcpy( pt + 3, reader.ptr, squares->elem_size );
CV_NEXT_SEQ_ELEM( squares->elem_size, reader );

cvPutText( img, "SQUARE", pt[i], &font, CV_RGB(20,255,0));

cvPolyLine( img, &rect, &count, 1, 1, CV_RGB(200,0,0), 4, CV_AA, 0 );
} // for

cvClearSeq(squares);
} // drawSquares

但我得到的是程序变得滞后。那么为执行 system (./ambil1.sh) 设置条件的正确算法是什么?

1 Câu trả lời

程序一直等到从属命令完成。在此期间它不会响应。

如果这就是您的需要,hệ thống Vậy là đủ rồi.

如果你想即发即弃,你可以使用 fork/exec 对,或者只使用 shell & 运算符在后台运行东西。

如果您需要启动、更改程序的行为,然后在从属命令完成时将其改回,您几乎必须使用 fork/exec/SIGCHLD/waitpid 组合。

关于检测正方形后运行命令的c++算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12233697/

26 4 0
Bài viết được đề xuất: opencv - 使用 Opencv 去除小 Blob
Bài viết được đề xuất: html - 如何使用CSS隐藏前两个div?
Bài viết được đề xuất: node.js - 如何使用 mongodb 命令删除字段内的 html 标签?
Bài viết được đề xuất: c++ - 使用 CV_INTER_AREA 调整图像大小
太空宇宙
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com