ä»å¤©æ们å°ä¸èµ·æ¢ç©¶å¦ä½ä½¿ç¨OpenCVåPythonä»å¾åä¸æåæå
´è¶£åºåï¼ROIï¼ã
å¨ä¹é´çæç« ä¸ï¼æ们å®æäºå¾åè¾¹ç¼æåï¼ä¾å¦ä»å°çæ¡ä¸æåæ¡è¾¹ã使ç¨äºç®åçOpenCVå½æ°å³å¯å®æè¿é¡¹ä»»å¡ï¼ä¾å¦inRangeãfindContoursãboundingRectãminAreaRectã minEnclosingCircleãcircleãHoughLinesãlineçï¼é½å¯ä»¥ã
ä»å¤©æ们çä»»å¡æ¯ä»å
å«æ£è
大èæ´»å¨å¿«ç
§çå¾åä¸æåæéçç段ãä¹åå¯ä»¥å°è¯¥æåçè¿ç¨åºç¨äºå
¶ä»ç¨åºä¸ï¼ä¾å¦è¯æå¥åº·ä¸å¦çæºå¨å¦ä¹ 模åã
å æ¤ï¼è®©æ们ä»æ¥çè¾å
¥å¾åå¼å§ãè¿æ¯ç±ç¥ç»ç§å¦é¢åçå»ç仪å¨çæçå
¸åæ¥åï¼è¯¥ä»ªå¨ä½¿ç¨ä¼ æå¨æ£æµæ¥èªæ£è
大èçä¿¡å·å¹¶å°å
¶æ¾ç¤ºä¸ºå½©è²å°å¾ãé常ï¼æåå¼ å¾çï¼ææå¾çé½æç»äºæ个ç¹å¾å¹¶ä¸èµ·åæ以è¿è¡è¯æã
æ¬ç»ä¹ çç®æ å¾åå
å«å个大èå¾
ä»ä¸é¢çå¾åä¸ï¼æ们åªæ³æåä¸å个å°å¾ï¼å¤´é¨æ«æï¼ç¸å¯¹åºçåºåï¼èå°å
¶ä»ææå
容é½æé¤å¨å¤ãå æ¤ï¼è®©æ们å¼å§å§ã
第ä¸æ¥æ¯æ£æµæ们è¦æåçç段çè¾¹ç¼ãè¿æ¯ä¸ä¸ªå¤æ¥éª¤è¿ç¨ï¼å¦ä¸æè¿°ï¼
1. 使ç¨â cvtColorï¼ï¼âå°RGBå¾å转æ¢ä¸ºç°åº¦
2. éè¿åºç¨æ¨¡ç³å½æ°â GaussianBlurï¼ï¼âæ¥æ¶é¤ç°åº¦å¾åä¸çåªå£°
3. æåå°â Cannyï¼ï¼âå½æ°åºç¨äºæ¨¡ç³å¾å以è·å¾è¾¹ç¼
è¾¹ç¼æ£æµè¿ç¨çè¾åºå¦ä¸æ示ï¼
使ç¨Cannyç®æ³çè¾¹ç¼æ£æµè¾åº
请注æï¼å°½ç®¡å·²è¯å«åºèå¾ç段ï¼ä½ä»æ许å¤ä¸éè¦çè¾¹ç¼éè¦æ¶é¤ï¼å¹¶ä¸æäºè¾¹ç¼ä¹é´æé´ééè¦å°éã
解å³è¿ä¸ªé®é¢çä¸ç§å¸¸ç¨æ¹æ³æ¯å½¢æ转æ¢ï¼å®æ¶åå¨å¾åä¸ä½¿ç¨ä¸ç³»åçæ©å¼ åè
èæ¥å»é¤ä¸éè¦çè¾¹ç¼åéåé´éã
æ们å¨å¤æ¬¡è¿ä»£ä¸ä½¿ç¨OpenCVå½æ°â dilateï¼ï¼âåâ erodeï¼ï¼âæ¥è·å¾å¦ä¸è¾åºã
使ç¨OpenCV对边ç¼è¿è¡äºä¸äºå¢å¼º
å¦æ们çå°çé£æ ·ï¼è¾¹ç¼ç°å¨å·²ç»å®æ并ä¸æ¯ä»¥åå
æ»å¾å¤ã
ç°å¨ï¼æ们å¯ä»¥ä½¿ç¨OpenCVå½æ°â findContoursï¼ï¼âæå该å¾åä¸çè½®å»ï¼å¹¶ä»
éæ©å
·æ以ä¸å±æ§çè½®å»ï¼
1. å ä½å½¢ç¶æ¯åå½¢ææ¤åå½¢
2. é¢ç§¯å¤§äºæ个éå¼ï¼å¨æ¤ç¤ºä¾ä¸ï¼å¼7000å¯ä»¥æ£å¸¸å·¥ä½ï¼ã
对äºç¬¬ä¸é¨åï¼æ们å°ä½¿ç¨OpenCVçâ boundingRectï¼ï¼âæ£æµæ¯ä¸ªè½®å»çè¾¹çç©å½¢ï¼å¹¶æ£æ¥çºµæ¨ªæ¯ï¼é«å®½æ¯ï¼æ¯å¦æ¥è¿1ã
ç°å¨æ们çä»»å¡å·²ç»å®æï¼ä½è¿éè¦è¿è¡ä¸äºå¾®è°ã
é常æ
åµæ¯å¨ä¸ä¸ªç段ä¸æ£æµå°å¤ä¸ªéå çè½®å»ï¼èæ们åªå¯¹ä¸ä¸ªæå
´è¶£ã
使ç¨éæ大æå¶å¯ä»¥è§£å³æ¤é®é¢ï¼å³æ们æ¥çææéå çè½®å»ï¼ç¶åéæ©é¢ç§¯æ大çè½®å»ä½ä¸ºæç»åéè½®å»ãé»è¾é常ç®åï¼å æ¤æ们ä¸éè¦ä»»ä½å
ç½®çOpenCVæPythonå½æ°ã
å¦ä¸ä¸ªéè¦çé»è¾æ¯åå«è¯å«å个é¨åï¼å³å·¦ä¸ï¼å³ä¸ï¼å·¦ä¸åå³ä¸ã
è¿ä¹é常ç®åï¼æ¶åè¯å«å¾åä¸å¿åæ 以åæ¯ä¸ªæ£æµå°çç段çè´¨å¿ã对段轮å»è¿è¡è´¨å¿æ£æµéè¦å¨è½®å»ä¸åºç¨OpenCV â momentsï¼ï¼âå½æ°ï¼ç¶å使ç¨ä»¥ä¸å
¬å¼è®¡ç®ä¸å¿ Xï¼Yåæ ï¼
center_xï¼center_y =ï¼intï¼M [â m10â] / M [â m00â]ï¼ï¼intï¼M [â m01â] / M [â m00â]ï¼ï¼
å°çº¿æ®µè´¨å¿åæ ä¸å¾åä¸å¿åæ è¿è¡æ¯è¾ï¼å¯ä»¥å°å个线段åå«æ¾ç½®å¨åèªçä½ç½®ã
ç°å¨æ们已ç»ç¡®å®äºå个é¨åï¼æ们éè¦æ建å¾åèçï¼è¿å°ä½¿æ们è½å¤ä»åå§å¾åä¸æåæéçç¹å¾ã
æ们å°ä½¿ç¨OpenCVå½æ°â drawContoursï¼ï¼âï¼å°é¢è²ç¨ä½ç½è²ï¼Rï¼Gï¼B = 255,2555,255ï¼ï¼å°å度ç¨ä½FILLEDï¼-1ï¼å¨é»è²èæ¯ä¸ç»å¶ææå个线段轮å»ãç»æå¦ä¸æ示ï¼
ç¨äºæåæ们çROIçèç
å¨åå§å¾åä¸åºç¨æ¤èçå¯ä»¥å¨æ们éæ©çèæ¯ï¼ä¾å¦é»è²æç½è²ï¼ä¸ä¸ºæ们æä¾æéçå段ã
对äºé»è²èæ¯ï¼æ们å建ä¸ä¸ªé»è²ç»å¸ï¼ç¶å使ç¨OpenCVå½æ°â bitwise_andï¼ï¼â以åå
åè·å¾çèçå¨å
¶ä¸è¿è¡ç»å¶ã
å¨é»è²èæ¯ä¸æåçROI
对äºç½è²èæ¯ï¼æ们é¦å
å建ä¸ä¸ªç½è²ç»å¸ï¼ç¶åéè¿ä½¿ç¨OpenCVå½æ°â drawContoursï¼ï¼âç»å¶è½®å»ä¸ºé»è²ï¼Rï¼Gï¼B = 0,0,0ï¼ä¸å度为FILLEDçè½®å»ï¼å¦ä¸æ示å建é¢è²å转çèçï¼-1ï¼ã
ç¨äºROIæåçå¤ç¨åç½®æ©æ¨¡ï¼å¾åæºä½è
ï¼
ç¶åï¼æ们使ç¨OpenCV â addï¼ï¼âå½æ°å°æ¤ååèçæ·»å å°å
åè·å¾çé»è²èæ¯ä¸ï¼å¹¶è·å¾ç¸åçç»æï¼ä½ä½¿ç¨ç½è²èæ¯ã
å¨ç½è²èæ¯ä¸æåçROI
å°æ¤ä¸ºæ¢ï¼æ们æ»ç»äºå ç§æ¹æ³ï¼å¯ä»¥è½»æ¾å°ä»å¾åä¸æåæå
´è¶£åºåã
åºå½æ³¨æï¼å¨å
·æååçå¤æ度çå
¶ä»å¾åçæ
åµä¸ï¼ä¸é¢ä½¿ç¨çæ¹æ³å¯ä»¥è¿è¡ä¿®æ¹ã
温馨提示:答案为网友推荐,仅供参考