日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

鼠标移动区域局部放大

發(fā)布時(shí)間:2025/4/16 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 鼠标移动区域局部放大 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這個(gè)程序類似于淘寶購物時(shí),在商品圖像上移動(dòng)鼠標(biāo),會(huì)出現(xiàn)一個(gè)放大鼠標(biāo)周圍矩形區(qū)域內(nèi)的局部圖像的窗口。話不多說,直接貼代碼。

[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;??
  • }??
  • 效果圖如下

    總結(jié)

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

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。