²é¿´: 1256  |  »Ø¸´: 2

yadan33

гæ (³õÈëÎÄ̳)

[½»Á÷] opencvÊý¾Ý½á¹¹ ÒÑÓÐ2È˲ÎÓë

ת×Ô£ºhttp://blog.csdn.net/thefutureisour/article/details/8455342
×î½üÔÚд×Ô¼ºµÄËã·¨£¬Æäʵ¾ÍÊǶÔһЩ´«Í³Ëã·¨µÄ¸Ä½ø¡£´«Í³Ëã·¨¿ÉÒԲο¼opecvµÄÔ´´úÂë¡£ÔÚÔĶÁÔ´´úÂëµÄ¹ý³ÌÖУ¬ÎÒÂýÂýÁì»áµ½ÁËopencvµÄÇ¿´óÖ®´¦£¬²¢²»ÊÇÒòΪËüʵÏÖÁ˸÷ÖÖËã·¨£¬¶øÊÇÔÚÓÚËü¶ÔÓÚ»ù±¾Êý¾Ý½á¹¹µÄÉè¼Æ£¬ÊÇµÃÆäËûÈË¿ÉÒԺܷ½±ãµÄʹÓÃÕâЩÊý¾Ý½á¹¹À´ÊµÏÖ×Ô¼ºµÄËã·¨¡£ÔÚ°ïÖúÊÖ²áÖУ¬ÒѾ­¶ÔÓÚÕâЩÊý¾Ý½á¹¹ÓбȽÏÏêϸµÄÃèÊöÁË¡£½ñÌìÎÒ¾ÍΪӢÓï²»ºÃµÄº¢×ÓÃÇ·þÎñһϣ¬¼òµ¥µÄ½éÉÜÒ»ÏÂËüÃÇ¡£


Ê×ÏȽéÉÜ2άµã¶ÔPoint_£¬ËüµÄÊÇÒ»¸öÄ£°åÀà¡£ÎÒÃÇ¿ÉÒÔÖ±½Ó·ÃÎÊÊý¾Ý³ÉÔ±x,y¡£Ëü²»½ö¶¨ÁË+¡¢-¡¢==¡¢!=Õâ4¸ö»ù±¾µÄ²Ù×÷£¬»¹¶¨ÒåÁ˵ã³Ë¡¢²æ³ËµÈ²Ù×÷¡£ÌرðµÄÕâ¸öÀ໹ÌṩÁËinsideº¯ÊýÀ´ÅжÏÒ»¸öµãÊÇ·ñÔÚ¾ØÐÎÇøÓòÄÚ¡£´ËÍ⣬»¹¶¨ÒåÁËһЩÆäËûµÄÀàÐÍת»¯º¯Êý£¬±ÈÈçת»¯Îª1.X°æ±¾µÄCvPoint¡£
ΪÁË·½±ãʹÓã¬opencvÓÖ¶Ô³£ÓõÄÀàÐͽøÐÐÁ˶¨Ò壺
typedef Point_<int> Point2i;
typedef Point2i Point;
typedef Point_<float> Point2f;
typedef Point_<double> Point2d;


ͬÀí»¹ÓÐPoint3_£¬Ö»²»¹ýËüÊÇÒ»¸ö3άµã(x,y,z)¶øÒÑ¡£ËüµÄ³£ÓÃÀàÐÍÊÇ£º
typedef Point3_<int> Point3i;
typedef Point3_<float> Point3f;
typedef Point3_<double> Point3d;


½éÉÜÍêµã£¬¾Í¿ÉÒÔ½éÉÜSize_ÁË¡£ËüÒ²ÊÇÄ£°åÀà¡£
typedef Size_<int> Size2i;
typedef Size2i Size;
typedef Size_<float> Size2f
SizeÄܹ»·ÃÎʵijÉÔ±±äÁ¿ÊÇheightºÍwidth¡£»¹¶¨ÒåÁËareaº¯ÊýÀ´ÇóÃæ»ý¡£ÆäËûµÄ²Ù×÷»ù±¾¶¼ÊÇÀàÐÍת»¯º¯Êý¡£


ÏÂÀ´½éÉÜRect_Ä£°æÀà¡£ËüÊÇÓÉ×óÉϽǵãºÍ³¤¶È¡¢¿í¶È¶¨ÒåµÄ¡£ÔÚopecvÖУ¬Ò»°ã¶¨ÒåΪ×ó¿ªÓÒ±ÕÇø¼ä¡£ÓÐÒâ˼µÄÊÇ£¬Õâ¸öÀྐྵȻҲÌṩÁËÒ»¸öRect+PointµÄº¯Êý£¬×÷ÓÃÊǶԾØÐÎµÄÆ«ÒÆ£¬»¹ÓÐÒ»¸öRect + SizeµÄº¯Êý£¬ÔÚ×óÉϽDz»±äµÄÇé¿öÏ£¬ÖØÐµ÷Õû¾ØÐεĴóС¡£ÆäËûµÄ²Ù×÷»¹ÓÐÓë&ºÍ|£¬ÊÇÇóÁ½¸ö¾ØÐεĽ»¼¯ºÍ²¢¼¯¡£


³ýÁË»ù±¾µÄ¾ØÐÎÖ®Í⣬opecv»¹ÌṩÁËÒ»¸ö¿ÉÒÔÐýתµÄ¾ØÐÎRotatedRect£¬ËüÊÇÓÉÖÐÐÄ¡¢±ä³¤¡¢Ðýת½Ç¶È¾ö¶¨µÄ¡£Äã¿ÉÒÔ·ÃÎÊËüµÄÕâÈý¸ö³ÉÔ±£¬Ò²¿ÉÒÔʹÓÃpointsº¯Êý·µ»ØËüµÄ4¸ö¶¥µã£¬Ê¹ÓÃboundingRectÇó³öËüµÄÍâ½Ó¾ØÐΣ¨·ÇÐýת£©£¬ÏÂÃæÊÇÒ»¸öÀý×Ó£º

[cpp] view plaincopy
int main(void)  
{  
    Mat bg(200,200,CV_8UC3,Scalar(0));  
    imshow("",bg);  
    RotatedRect rRect(Point2f(100,100),Size(100,100),40);   
    Point2f vertices[4];  
    rRect.points(vertices);  
    for(int i = 0; i < 4;++i)  
        line(bg,vertices,vertices[(i+1)%4],Scalar(0,255,0));  
    Rect brect = rRect.boundingRect();  
    rectangle(bg,brect,Scalar(255,0,0));  
    imshow("",bg);  
    waitKey();  
    return 0;  
}  

ÏÂÃæ½éÉÜMatxÀ࣬ÕâÒ²ÊÇÒ»¸öÄ£°åÀ࣬ÓÃÀ´¼Ç¼һЩСµÄ¾ØÐΡ£ÕâЩ¾ØÐÎÔÚ±àÒëǰ´óС¾Í¹Ì¶¨ÁË£º
typedef Matx<float, 1, 2> Matx12f;
typedef Matx<double, 1, 2> Matx12d;
...
typedef Matx<float, 1, 6> Matx16f;
typedef Matx<double, 1, 6> Matx16d;
typedef Matx<float, 2, 1> Matx21f;
typedef Matx<double, 2, 1> Matx21d;
...
typedef Matx<float, 6, 1> Matx61f;
typedef Matx<double, 6, 1> Matx61d;
typedef Matx<float, 2, 2> Matx22f;
typedef Matx<double, 2, 2> Matx22d;
...
typedef Matx<float, 6, 6> Matx66f;
typedef Matx<double, 6, 6> Matx66d;


Èç¹ûҪʹÓÃÁé»îµÄ¾ØÐΣ¬»¹ÊÇÓÃMat°É¡£


ÏÂÃæ½éÉÜVecÀ࣬ËüÆäʵÊÇÔªËØ½ÏÉÙµÄÏòÁ¿¡£
typedef Vec<uchar, 2> Vec2b;
typedef Vec<uchar, 3> Vec3b;
typedef Vec<uchar, 4> Vec4b;
typedef Vec<short, 2> Vec2s;
typedef Vec<short, 3> Vec3s;
typedef Vec<short, 4> Vec4s;
typedef Vec<int, 2> Vec2i;
typedef Vec<int, 3> Vec3i;
typedef Vec<int, 4> Vec4i;
typedef Vec<float, 2> Vec2f;
typedef Vec<float, 3> Vec3f;
typedef Vec<float, 4> Vec4f;
typedef Vec<float, 6> Vec6f;
typedef Vec<double, 2> Vec2d;
typedef Vec<double, 3> Vec3d;
typedef Vec<double, 4> Vec4d;
typedef Vec<double, 6> Vec6d;
ËüÖ§³Ö¼Ó¡¢¼õ¡¢Êý³Ë¡¢ÏàµÈ¡¢²»µÈ¡¢Çó·¶ÊýµÈÔËËã¡£




Scalar_ÀàÆäʵÊÇÓÃVec<tp,4>ÅÉÉúÏÂÀ´µÄ£¬Ò²¾ÍÊÇ˵£¬ËüÊÇÒ»¸ö4Ôª×飺typedef Scalar_<double> Scalar;
Ëûͨ³£ÓÃÀ´´«µÝÏñËØ¡£


RangeÀàÓÃÀ´Ö¸¶¨Á¬ÐøµÄ×ÓÐòÁС£±ÈÈç¾ØÕóµÄÒ»²¿·Ö£¬±È½Ï¼òµ¥£¬ÎÒÃÇÖ±½Ó¿´¶¨Ò壺
[cpp] view plaincopy
class CV_EXPORTS Range  
{  
public:  
    Range();  
    Range(int _start, int _end);  
    Range(const CvSlice& slice);  
    int size() const;  
    bool empty() const;  
    static Range all();  
    operator CvSlice() const;  
  
    int start, end;  
};  

½²ÍêÕâЩ¼òµ¥µÄÀàÐÍÖ®ºó£¬ÎÒÃÇ¿´Ò»¸ö·Ç³£ÖØÒªµÄÀàÐÍ£»Mat¡£MatÊÇopencvÖеÄÒ»Öַdz£ÖØÒªµÄÊý¾Ý½á¹¹£¬µ±¸Õ¿ªÊ¼Ê¹ÓÃʱ£¬ÎÒ½ö½ö°ÑËüµ±×öÒ»¸ö´¢´æÍ¼ÏñµÄÊý¾Ý½á¹¹£¬ºóÀ´²ÅÂýÂýÀí½â£¬Ëü²»½ö¿ÉÒÔ´¢´æ¶þά¾ØÕó£¬Ò²¿ÉÒÔ´¢´æ¸ßά¾ØÕó£¬ÕâÔÚģʽʶ±ð¡¢»úÆ÷ѧϰÖÐÊǷdz£³£Óõġ£¶ÔÓÚÕâÀàÎÊÌ⣬ÎÒÃǾÍûÓбØÒª×Ô¼ºÊÖ¶¯·ÖÅäÄÚ´æÁË£¬Ö±½ÓʹÓÃËüÃǾͿÉÒÔÁË¡£Õâ¸öÀàµÄÄÚÈݺܶ࣬µ«opencvµÄ°ïÖúÊֲᣬºÜºÃµÄ°ïÎÒÃÇÀíÇåµÄÆäÖеÄÄÚÈÝ¡£
ÆäÖеĺËÐÄÊý¾Ý³ÉÔ±dataµÄ´¢´æ·½Ê½ÔÚǰһƪ²©¿Í¡¶ÎÒµÄOpenCVѧϰ±Ê¼Ç£¨23£©£ºMatÖÐʵ¼ÊÊý¾ÝÊÇÈçºÎ±£´æµÄ¡·ÖÐÒѾ­ÌÖÂÛ¹ýÁË£¬ÕâÀïÖ»×öÒ»¸ö²¹³ä£¬¾ÍÊǶàάÇé¿ö£º
[cpp] view plaincopy
int main(void)  
{  
    int sz[]={4,5,6};  
    Mat img(3,sz,CV_8U);//3άÊý×é  
    cout<<img.dims<<endl;  
    cout<<img.size[0]<<endl;  
    cout<<img.size[1]<<endl;  
    cout<<img.size[2]<<endl;  
  
    cout<<img.step[0]<<endl;  
    cout<<img.step[1]<<endl;  
    cout<<img.step[2]<<endl;  
    //±éÀúÿ¸öÔªËØ  
    for(int i = 0; i < 4;++i)  
    {  
        for(int j = 0; j < 5;++j)  
        {  
            for(int k = 0; k < 6;++k)  
            {  
                cout<<(int)*(B.data + B.step[0]*i + B.step[1]*j + B.step[2]*k)<<endl;  
            }  
        }  
    }  
    return 0;  
}  
ÎÒÃǽ¨Á¢ÁËÒ»¸ö3άÊý×飬Êý×éµÄÿһά³¤¶È·Ö±ðΪ4,5,6¡£Õâ¿ÉÒÔͨ¹ýsizeÀ´»ñµÃ¡£ÓÉÓÚÿ¸öµÚһάÏòÁ¿Öаüº¬5¸öµÚ¶þάµÄÊý×飬¶øÃ¿¸öµÚ¶þάÊý×éÖÐÓÖ°üº¬ÁË6¸öµÚÈýάÊý×飬ËùÒÔµÚһάÿÔö¼ÓÒ»²½£¬Ï൱ÓÚÕû¸öµØÖ·Òƶ¯ÁË5*6.ËùÒÔstep[0],µÈÓÚ30.
ÏÂÃæÎÒÃÇÖ÷ÒªÊÇ¿´¿´MatÌṩµÄº¯Êý¡£
Ê×ÏÈÊǹ¹Ô캯Êý£¬¹â¹¹Ô캯Êý¾ÍÓкܶàÖÖ£¬ÕâÀï½éÉܼ¸ÖÖ³£Óõķ½Ê½£º
1.ʹÓÃ(nrows, ncols, type)£¬³õʼ»¯2ά¾ØÕó
// ´´½¨Ò»¸ö7*7µÄ2ͨµÀ¸¡µã¾ØÕó£¬Í¨³£ÕâÑùµÄ¾ØÕóÓÃÀ´±íʾ¸´¾ØÕó
Mat M(7,7,CV_32FC2,Scalar(1,3));
//¸Ä±äΪ100*60µÄ15ͨµÀuchar¾ØÕó£¬Ô­ÏȵÄÊý¾Ý½«»á±»ÊÍ·Å
M.create(100,60,CV_8UC(15));
´´½¨¸ßά¾ØÕó
//´´½¨100*100*100µÄ3ά¾ØÕó
int sz[] = {100, 100, 100};
Mat bigCube(3, sz, CV_8U, Scalar::all(0));


ÏÂÃæÊÇһЩ¼òµ¥µÄ¶ÔÕûÐС¢ÕûÁеIJÙ×÷
// µÚ5ÐÐ*3 + µÚ3ÐУ¬ÕâÑùµÄ²Ù×÷ÔÚÏßÐÔ´úÊýÖкܳ£¼û
M.row(3) = M.row(3) + M.row(5)*3;


// °ÑµÚ7Áп½±´µ½µÚ1ÁÐ
// M.col(1) = M.col(7); // ²»ÄÜÕâÑùд
Mat M1 = M.col(1);
M.col(7).copyTo(M1);


ÓÃԴͼÏñµÄÒ»²¿·Ö´´½¨ÐÂͼÏñ
// ´´½¨Ò»¸ö320*240µÄͼÏñ
Mat img(Size(320,240),CV_8UC3);
// Ñ¡Ôñ¸ÐÐËÈ¤ÇøÓò
Mat roi(img, Rect(10,10,100,100));
// ½«ÇøÓò¸ÄΪÂÌÉ«£¬Ô­Í¼ÏñÒ²»á·¢ÉúÐÞ¸Ä
roi = Scalar(0,255,0);


BÊÇAµÄ[1,3)ÁУ¬¶ÔBµÄÐ޸ĻáÓ°ÏìA
[cpp] view plaincopy
int main(void)  
{  
    Mat A = Mat::eye(5,5,CV_8U);  
  
    Mat B = A(Range::all(),Range(1,3));  
    B.setTo(100);  
    for(int i = 0; i < 5;++i)  
    {  
        for(int j = 0; j < 5;++j)  
        {  
            cout<<(int)A.at<uchar>(i,j)<<endl;  
        }  
    }  
    return 0;  
}  

Èç¹ûÐèÒªÉ±´£¬ÔòʹÓÃclone·½·¨¡£


¶ÔÓÚ³õʼ»¯Mat£¬»¹ÓÐÆäËûµÄһЩ·½·¨£º
±ÈÈçMatlab·ç¸ñµÄ zeros(), ones(), eye()£º
M += Mat::eye(M.rows, M.cols, CV_64F);


Mat M = (Mat_<double>(3,3) << 1, 0, 0, 0, 1, 0, 0, 0, 1);


Èç¹ûÊÇ´¦Àí¡°ÍâÀ´¡±µÄÊý¾Ý£¬ÄÇôÔòÔÚ¹¹Ô캯ÊýÖмÓÉÏdataÔò»á·Ç³£·½±ãµÄ½«ÍâÀ´Êý¾Ýת»¯ÎªMat½á¹¹£º
[cpp] view plaincopy
void process_video_frame(const unsigned char* pixels,int width, int height, int step)  
{  
    Mat img(height, width, CV_8UC3, pixels, step);  
    GaussianBlur(img, img, Size(7,7), 1.5, 1.5);  
}  
  
double m[3][3] = {{a, b, c}, {d, e, f}, {g, h, i}};  
Mat M = Mat(3, 3, CV_64F, m).inv();  

ÌØ±ðµÄ£¬¶ÔÓÚÓëopencv1.XÖеÄIplImage½á¹¹µÄ½»»¥£º
[cpp] view plaincopy
IplImage* img = cvLoadImage("greatwave.jpg", 1);  
Mat mtx(img); // convert IplImage* -> Mat  
CvMat oldmat = mtx; // convert Mat -> CvMat  

˵ÍêÁË£¬¹¹Ôì¡¢³õʼ»¯£¬Ó¦¸ÃÌÖÂÛÔªËØ·ÃÎʵķ½·¨£¬Õâ¸öÔÚ֮ǰµÄ²©¿ÍÖÐÒ²ÓÐÌá¹ý¡¶ÎÒµÄOpenCVѧϰ±Ê¼Ç£¨¶þ£©£º²Ù×÷ÿ¸öÏñËØ¡·ÕâÀï¾Í²»ÔÙÖØ¸´ÁË¡£
»Ø¸´´ËÂ¥
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

_tony

ľ³æ (СÓÐÃûÆø)

2Â¥2016-01-04 16:28:15
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

Damons

½ð³æ (ÕýʽдÊÖ)

ÉáµÃ²»ÔøÉáµÃµÄÉáµÃ»áÉáµÃ£¬Ï°¹ß²»ÔøÏ°¹ßµÄϰ¹ß»áϰ¹ß¡£
3Â¥2016-01-14 00:11:02
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ yadan33 µÄÖ÷Ìâ¸üÐÂ
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[»ù½ðÉêÇë] ÃæÉÏÒâ¼û³öÀ´ÁË +6 »ÆÄñÓÚ·ÉChao 2026-08-29 10/500 2026-08-29 15:50 by ΢²»×ãµÀÊ¿
[¿¼²©] ÊÛSCIÒ»ÇøT0PÎÄÕ£¬ÎÒ:8.O.55.1.O54,¿ÆÄ¿È«,¿ÉÙ¤¼± +4 ASdOkHsho7FD 2026-08-28 7/350 2026-08-29 14:15 by jCd0dEvKHShX
[ÂÛÎÄͶ¸å] ÊÛSCIÒ»ÇøT0PÎÄÕ£¬ÎÒ:8.O55.1.O.54,¿ÆÄ¿È«,¿ÉÊ®¼± +3 ASdOkHsho7FD 2026-08-28 4/200 2026-08-29 13:51 by jCd0dEvKHShX
[½Ìʦ֮¼Ò] ÊÛSCIÒ»ÇøT0PÎÄÕ£¬ÎÒ:8.O.55.1.O54,¿ÆÄ¿È«,¿ÉÙ¤¼± +4 ASdOkHsho7FD 2026-08-28 5/250 2026-08-29 11:49 by jCd0dEvKHShX
[¿¼ÑÐ] ÊÛÒ»ÇøSCIÎÄÕÂT0P£¬ÎÒ:8O.551.O54,¿ÆÄ¿È«,¿ÉÊ®¼± +4 ASdOkHsho7FD 2026-08-28 6/300 2026-08-29 11:40 by jCd0dEvKHShX
[ÕÒ¹¤×÷] ÊÛSCIÎÄÕ£¬ÎÒ:8O5.5.1.O.54,¿ÆÄ¿ÆëÈ«,¿É+¼± +4 ASdOkHsho7FD 2026-08-28 6/300 2026-08-29 11:29 by jCd0dEvKHShX
[»ù½ðÉêÇë] ÖÐÇà»ùÁËÒª·¢ÅóÓÑȦÂ𣿠+3 349506619 2026-08-28 3/150 2026-08-29 10:49 by ľ·ç9012
[½Ìʦ֮¼Ò] ÊÛSCI-T0PÎÄÕ£¬ÎÒ:8O.5.5.1.O.54,¿ÆÄ¿ÆëÈ«,¿É+¼± +4 ASdOkHsho7FD 2026-08-28 7/350 2026-08-29 09:26 by G6APbkg8SA6w
[»ù½ðÉêÇë] ÓÐûÓÐÈÔûÊÕµ½ÐÅÏ¢µÄ +3 µÂÉÐÖÐÐÐ 2026-08-27 3/150 2026-08-28 15:24 by rongshuxia
[»ù½ðÉêÇë] »ù½ðϵͳʲôÄÚÈÝҲûÓÐ 30+4 winsaint 2026-08-27 9/450 2026-08-28 11:06 by maolC
[»ù½ðÉêÇë] »ù½ðδÖУ¬ÕâÖÖ´ð¸´ÊÇÄ£°åÂ𣿠+5 zhaosm1982 2026-08-27 6/300 2026-08-27 16:00 by lfy8008
[»ù½ðÉêÇë] ¿´°åÉÏÕâô¶àÖеģ¬ÓеãÏñ50ÈËȺÀï49¸öÈ˶¼ÊÇÆ­×ÓµÄÄÇÖָоõ¡­¡­ +5 a089 2026-08-26 6/300 2026-08-27 14:05 by jonewore
[»ù½ðÉêÇë] Ôõô¿´Çà»ùÖÐÁËûÓа¡ +5 Ò¶¾Å΢ 2026-08-26 5/250 2026-08-27 10:35 by l_zh2008
[»ù½ðÉêÇë] 2026Äê8ÔÂ25ÈÕ¹ú×ÔÈ»·Å°ñǰͻȻÊÕµ½ÁÐÈëÆÀÉóר¼ÒÓʼþ£¬ÓйØÏµÂ𣿠+25 ľˮ˼¶¹ 2026-08-25 28/1400 2026-08-26 14:53 by draco1987
[»ù½ðÉêÇë] ¹úºÏ¿É²éÁË +3 paperzjh 2026-08-26 3/150 2026-08-26 10:41 by LemmonTr
[Ö°³¡ÈËÉú] ѧÉúײ¼û¸¨µ¼Ô±ËÍÍâÂô£¬µÚ¶þÌìÈ«°à¶¼³ÁĬÁË +3 ¾¨ÓãÈÚ½ð_Õã½­_É 2026-08-22 3/150 2026-08-26 09:01 by zzuzxg
[»ù½ðÉêÇë] Å£À´£¡Ã×À´£¡ÃæÀ´£¡ +8 beefly 2026-08-26 8/400 2026-08-26 08:37 by xuzhipiao
[»ù½ðÉêÇë] Ã÷ÌìÓ¦¸Ã¿É²éÁË£¡£¿ +6 chengyan1220 2026-08-23 6/300 2026-08-25 19:45 by zfd97
[»ù½ðÉêÇë] Èç¹û´Ë¿ÌÄãÕýÔÚΪ¹ú»ù¸Ðµ½½¹ÂÇ£¬²»·ÁÀ´ÌýÌýÕâÊס¶»ù½ðÖ®Íâ¡· +8 scalable 2026-08-24 8/400 2026-08-25 12:52 by jnhyjjm
[»ù½ðÉêÇë] ûÓÐÈκÎÏûÏ¢-ÊDz»ÊǾÍÁ¹ÁË +9 ͼÀ²Í¼À² 2026-08-24 10/500 2026-08-25 11:59 by ÄϺ£Ð¡¸ç
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û