日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

鼠标移动区域局部放大

發布時間:2025/4/16 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 鼠标移动区域局部放大 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這個程序類似于淘寶購物時,在商品圖像上移動鼠標,會出現一個放大鼠標周圍矩形區域內的局部圖像的窗口。話不多說,直接貼代碼。

[c-sharp]?view plaincopy
  • #include?<cv.h>??
  • #include?<highgui.h>??
  • #include?<stdio.h>??
  • #pragma?comment(?lib,?"cv.lib"?)??
  • #pragma?comment(?lib,?"cxcore.lib"?)??
  • #pragma?comment(?lib,?"highgui.lib"?)??
  • IplImage*?org?=?0;??
  • IplImage*?img?=?0;???
  • IplImage*?dst?=?0;???
  • int?foo=60;??
  • void?on_mouse(?int?event,?int?x,?int?y,?int?flags,?void*?ustc)??
  • {??
  • ????if(?event?==?CV_EVENT_MOUSEMOVE?&&?!(flags?&?CV_EVENT_FLAG_LBUTTON))??
  • ????{??
  • ????????cvCopy(org,img);??
  • ????????CvPoint?p0;??
  • ????????CvPoint?p1;??
  • ????????if(x<foo)??
  • ????????{??
  • ????????????if(y<foo)??
  • ????????????{??
  • ????????????????p0=cvPoint(0,0);??
  • ????????????????p1=cvPoint(2*foo,2*foo);??
  • ????????????}??
  • ????????????else?if(y>img->height-foo)??
  • ????????????{???
  • ????????????????p0=cvPoint(0,img->height-2*foo);??
  • ????????????????p1=cvPoint(2*foo,img->height);??
  • ????????????}??
  • ????????????else??
  • ????????????{??
  • ????????????????p0=cvPoint(0,y-foo);??
  • ????????????????p1=cvPoint(2*foo,y+foo);??
  • ????????????}??
  • ????????}??
  • ????????else?if(x>img->width-foo)??
  • ????????{??
  • ????????????if(y<foo)??
  • ????????????{??
  • ????????????????p0=cvPoint(img->width-2*foo,0);??
  • ????????????????p1=cvPoint(img->width,2*foo);??
  • ????????????}??
  • ????????????else?if(y>img->height-foo)??
  • ????????????{???
  • ????????????????p0=cvPoint(img->width-2*foo,img->height-2*foo);??
  • ????????????????p1=cvPoint(img->width,img->height);??
  • ????????????}??
  • ????????????else??
  • ????????????{??
  • ????????????????p0=cvPoint(img->width-2*foo,y-foo);??
  • ????????????????p1=cvPoint(img->width,y+foo);??
  • ????????????}??
  • ????????}??
  • ????????else??
  • ????????{??
  • ????????????if(y<foo)??
  • ????????????{??
  • ????????????????p0=cvPoint(x-foo,0);??
  • ????????????????p1=cvPoint(x+foo,2*foo);??
  • ????????????}??
  • ????????????else?if(y>img->height-foo)??
  • ????????????{???
  • ????????????????p0=cvPoint(x-foo,img->height-2*foo);??
  • ????????????????p1=cvPoint(x+foo,img->height);??
  • ????????????}??
  • ????????????else??
  • ????????????{??
  • ????????????????p0=cvPoint(x-foo,y-foo);??
  • ????????????????p1=cvPoint(x+foo,y+foo);??
  • ????????????}??
  • ????????}??
  • ????????cvRectangle(img,p0,p1,CV_RGB(0,255,0));??
  • ????????cvSetImageROI(org,cvRect(p0.x,p0.y,p1.x-p0.x,p1.y-p0.y));??
  • ????????cvResize(org,dst);??
  • ????????cvResetImageROI(org);??
  • ????????cvShowImage(?"img",?img?);??
  • ????????cvShowImage("dst",dst);??
  • ????}??
  • }??
  • int?main()??
  • {??
  • ????org=cvLoadImage("lena.jpg",1);??
  • ????img=cvCloneImage(org);??
  • ????dst=cvCreateImage(cvSize(foo*4,foo*4),org->depth,org->nChannels);??
  • ????cvNamedWindow("img",1);??
  • ????cvSetMouseCallback(?"img",?on_mouse,?0?);??
  • ????cvShowImage("img",img);??
  • ????cvNamedWindow("dst",1);??
  • ????cvWaitKey(0);???
  • ????cvDestroyAllWindows();??
  • ????cvReleaseImage(&org);??
  • ????cvReleaseImage(&img);??
  • ????cvReleaseImage(&dst);??
  • ????return?0;??
  • }??
  • 效果圖如下

    總結

    以上是生活随笔為你收集整理的鼠标移动区域局部放大的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。