Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
ʹÓÃPython+opencv½øÐÐͼÏñ´¦Àí
 
ÒëÕߣºÅÍʯ
  2715  次浏览      28
 2020-7-14  
 
±à¼­ÍƼö:
±¾ÎÄʹÓÃOpenCV¼ò½é£¬OpencvµÄ°²×°¡¢Í¼ÏñÑÕɫģÐ͵Äת»»ÓëͼÐλæÖƵÈÏà¹ØÄÚÈÝ£¬ÏêÇéÇë¿´ÏÂÎÄ¡£
±¾ÎÄÀ´×ÔÓÚÔÆ+ÉçÇø£¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼­¡¢ÍƼö¡£

¼ÆËã»úÊÓ¾õÊÇÈ˹¤ÖÇÄÜ×îÈÈÃŵÄÓ¦ÓÃÁìÓòÖ®Ò»¡£È˹¤ÖÇÄܼ¼ÊõÍÆ¶¯ÁËÆû³µ×Ô¶¯¼ÝÊ»¡¢»úÆ÷ÈËÒÔ¼°¸÷ÖÖÕÕÆ¬´¦ÀíÀàÈí¼þµÄ¾Þ´ó·¢Õ¹¡£Ä¿±ê¼ì²â¼¼ÊõÒ²ÔÚÎȲ½Íƽø¡£Éú³É¶Ô¿¹ÍøÂ磨GANs£©Í¬ÑùÒ²ÊÇÈËÃÇ×î½ü±È½Ï¹Ø×¢µÄÒ»¸öÎÊÌâ¡£ÕâЩ¶¼ÔÚÏòÎÒÃÇչʾδÀ´¼ÆËã»úÊÓ¾õÁìÓòµÄ·¢Õ¹Ç°¾°ÊǶàôµÄ²»¿ÉÏÞÁ¿¡£

ÈÃÎÒÃÇÒ»ÆðµÇÉÏÈ˹¤ÖÇÄÜ·¢Õ¹µÄ¸ßËÙÁгµ¡£´Ó±¾ÎÄ¿ªÊ¼£¬ÎÒÃǽ«ÓÐһϵÁйØÓÚͼÏñ´¦ÀíºÍÄ¿±ê¼ì²â»ù´¡ÖªÊ¶µÄ½Ì³Ì¡£±¾ÆªÊÇOpenCVÈëÃŽ̵̳ÚÒ»²¿·Ö£¬ÍêÕûµÄϵÁн̳ÌÈçÏ£º

1. Àí½âÑÕɫģÐÍÓëÔÚͼÏñÉÏ»æÖÆÍ¼ÐΣ¨Í¼Ïñ´¦Àí»ù±¾²Ù×÷£©¡£

2. »ù±¾µÄͼÏñ´¦ÀíÓë¹ýÂË¡£

3. ´ÓÌØÕ÷¼ì²âµ½ÈËÁ³¼ì²â£¨TBU£©

±¾ÏµÁеĵÚÒ»²¿·Ö½«´ÓOpencvµÄ°²×°£¬½áºÏ´úÂëʵս½²½âÑÕɫģÐÍÓëͼÐλæÖƽ²Æð¡£±¾½Ì³ÌµÄÍêÕû´úÂëÒѾ­·ÅÔÚGithubÉÏ£¬·½±ã´ó¼ÒʹÓá£

Ò»¡¢OpenCV¼ò½é

ͼÏñ´¦ÀíÊÇÖ¸¶ÔͼÏñÖ´ÐÐһЩ²Ù×÷ÒÔ´ïµ½Ô¤ÆÚЧ¹ûµÄ¹ý³Ì¡£¿ÉÒÔÀà±ÈÊý¾Ý·ÖÎö¹¤×÷£¬ÔÚÊý¾Ý·ÖÎöʱÎÒÃÇÐèÒª×öһЩÊý¾ÝÔ¤´¦ºÍÌØÕ÷¹¤³Ì¡£Í¼Ïñ´¦ÀíÒ²ÊÇÒ»ÑùµÄ¡£ÎÒÃÇͨ¹ýͼÏñ´¦ÀíÀ´´¦ÀíͼƬ´Ó¶ø¿ÉÒÔ´ÓÖÐÌáÈ¡´¦Ò»Ð©¸ü¼ÓÓÐÓõÄÌØÕ÷¡£ÎÒÃÇ¿ÉÒÔͨ¹ýͼÏñ´¦Àí¼õÉÙͼÏñÔëÉù£¬µ÷ÕûͼÏñÁÁ¶È¡¢ÑÕÉ«»òÕ߶Աȶȵȵȡ£ÏëÒª½øÒ»²½ÏµÍ³Á˽âͼÏñ´¦Àí»ù´¡ÖªÊ¶£¬²Î¿´£¨https://www.youtube.com/watch?v=QMLbTEQJCaI£©¡£

OpenCVÊÇOpen Source Computer VisionµÄËõд£¬ÓÉÓ¢ÌØ¶û¹«Ë¾ÓÚ1999ÄêÍÆ³ö¡£Ëü×î³õÊÇÓÃC/ C++±àдµÄ£¬ËùÒÔÄã¿ÉÄܻῴµ½¸ü¶àÓÃCÓïÑÔ¶ø²»ÊÇPython±àдµÄ½Ì³Ì¡£µ«ÏÖÔÚËüÔÚPythonÖÐÒ²±»¹ã·ºÓÃÓÚ¼ÆËã»úÊÓ¾õ¡£Ê×ÏÈ£¬ÈÃÎÒÃÇΪʹÓÃOpenCVÅäÖû·¾³¡£°²×°¹ý³ÌÈçÏ£¬Ïêϸ°²×°ÃèÊö²Î¿´£¨https://pypi.org/project/opencv-python/£©¡£

pip install opencv-python==3.4.2
pip install opencv-contrib-python==3.3.1

°²×°Íê³Éºó£¬¿ÉÒÔͨ¹ýÏ·½Á½ÌõÃüÁî²âÊÔÆäÊÇ·ñÕý³£¹¤×÷¡£Èç¹ûûÓÐÈκα¨´í£¬ÄÇô¾Í¿ÉÒÔ¿ªÊ¼Ê¹ÓÃÁË£¡

import cv2
cv2.__version__

ÎÒÃÇʹÓÃÓÃOpenCV×öµÄµÚÒ»²½¾ÍÊǵ¼ÈëÒ»¸öͼÏñ£¬ÈçÏ·½Ëùʾ¡£

import numpy as np
import matplotlib.pyplot as plt

%matplotlib inline

# Import the image
img = cv2.imread('burano.jpg')

plt.imshow(img)

ÉÏͼÊÇÔÚÒâ´óÀû×îÃÀÀöµÄµºÓìÖ®Ò»²¼À­ÅµËùÅÄÉãµÄ¡£Èç¹ûÄãÈ¥¹ýÕâ¸öµØ·½£¬Äã¿ÉÄÜ»á×¢Òâµ½Õâ·ùͼÀïÓÐЩ²»Í¬¡£ÕâȷʵºÍÎÒÃÇͨ³£¿´µ½µÄ²¼À­ÅµµÄÕÕÆ¬Óе㲻ͬ¡£ÕâÊÇÒòΪOpenCVÖÐÑÕɫģʽµÄĬÈÏÉèÖÃ˳ÐòÊÇBGR£¬²»Í¬ÓëMatplotlib¡£Òò´Ë£¬ÒªÔÚRGBģʽϲ鿴ͼÏñ£¬ÎÒÃÇÐèÒª½«Ëü´ÓBGRת»»ÎªRGB£¬ÈçÏÂËùʾ¡£

# Convert the image into RGB
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(img_rgb)

ÕâÕÅͼ¾ÍÊÇÕæÕýµÄ²¼À­ÅµÁË£¬¶àôÃÀÀö£¡

¶þ¡¢²»Ö»ÊÇRGB

ÎÒÃÇÔÙÀ´Ì¸Ì¸ÑÕɫģÐÍ¡£ÑÕɫģÐÍÊÇÒ»¸öʹÓÃÔ­É«¹¹½¨È«ÏµÁÐÑÕÉ«µÄϵͳ¡£ÕâÀïÏȽéÉÜÕâÁ½ÖÖ²»Í¬µÄÑÕɫģÐÍ£º¡°¼ÓɫģÐÍ¡±ºÍ¡±¼õɫģÐÍ¡±¡£¼ÓɫģÐÍʹÓùâ´ú±í¼ÆËã»úÆÁÄ»ÉϵÄÑÕÉ«£¬¶ø¼õɫģÐÍʹÓÃīˮÔÚÖ½ÉÏ´òÓ¡ÕâЩÊý×ÖͼÏñ¡£Ç°ÕßµÄÔ­É«ÓɺìÉ«¡¢ÂÌÉ«ºÍÀ¶É«(RGB)×é³É£¬ºóÕßÓÐÀ¶É«¡¢Æ·ºì¡¢»ÆÉ«ºÍºÚÉ«(CMYK)ËÄÖÖÔ­É«×é³É¡£ÎÒÃÇÔÚͼÏñÉÏ¿´µ½µÄËùÓÐÆäËûÑÕÉ«¶¼ÊÇÓÉÕâЩԭɫ×éºÏ»ò»ìºÏ¶ø³ÉµÄ¡£ËùÒÔµ±·Ö±ðÓÃRGB¡¢CMYK±íʾһÕÅͼÏñʱ£¬Í¼Ïñ¿ÉÒÔÓÐ×ÅÂÔ΢²»Í¬µØ±í´ï¡£ÈçÏÂͼËùʾ¡£

ÈÕ³£Éú»îÖмûµ½×î¶àµÄ¾ÍÊÇÕâÁ½ÖÖÑÕɫģÐÍ¡£È»¶ø£¬ÔÚ²ÊɫģÐ͵ÄÊÀ½çÀï²»½ö½öÖ»ÓÐÕâÁ½ÖÖÑÕɫģÐÍ¡£ÖÚ¶àµÄÑÕɫģÐÍÖУ¬»Ò¶È£¨grayscale£©¡¢HSVºÍHLSÒ²ÊÇÄã»áÔÚ¼ÆËã»úÊÓ¾õÈÎÎñÖо­³£¿´µ½µÄ¡£

»Ò¶È£¨grayscale£©ºÜ¼òµ¥¡£Ëüͨ¹ýºÚ°×µÄÇ¿¶ÈÀ´±íʾͼÏñºÍÐÎ̬£¬ÕâÒ²Òâζ×ÅËüÖ»ÓÐÒ»¸öͨµÀ¡£Òª²é¿´»Ò¶ÈͼÏñ£¬ÎÒÃÇÐèÒª½«ÑÕɫģÐÍת»»Îª»ÒÉ«£¬¾ÍÏñÇ°Ãæ¶ÔBGRͼÏñËù×öµÄ²Ù×÷ÄÇÑù¡£

# Convert the image into gray scale
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
plt.imshow(img_gray, cmap = 'gray')

ʵ¼ÊÉÏ£¬RGBͼÏñÊÇÓÉÈý¸öͨµÀµþ¼Ó¶ø³ÉµÄ£ºR, G, b¡£ËùÒÔÈç¹ûÎÒÃǰÑÿ¸öͨµÀÒ»¸öÒ»¸öµÄÃè»æ³öÀ´£¬ÎÒÃǾͿÉÒÔÀí½âÑÕɫͨµÀÊÇÈçºÎ¹¹³ÉµÄÁË£¡

# Plot the three channels of the image
fig, axs = plt.subplots(nrows = 1, ncols = 3,figsize = (20, 20))
for i in range(0, 3):
ax =axs[i]
ax.imshow(img_rgb[:, :, i], cmap = 'gray')
plt.show()

¹Û²ìÉÏÃæµÄͼƬ¡£ÕâÈý·ùͼÏñչʾÁËÿ¸öͨµÀÊÇÈçºÎ×é³ÉµÄ¡£ÔÚRͨµÀͼÖУ¬ºìÉ«±¥ºÍ¶È¸ßµÄ²¿·Ö¿´ÆðÀ´Êǰ×É«µÄ¡£ÕâÊÇÓÉÓÚºìÉ«²¿·ÖÖеÄÖµ½Ó½ü255¡£ÔÚ»Ò¶ÈģʽÏ£¬ÖµÔ½¸ßÑÕÉ«¾ÍÔ½°×¡£Ä㻹¿ÉÒÔʹÓÃG»òBͨµÀÀ´¼ì²éÕâÒ»µã£¬²¢±È½ÏijЩ²¿·ÖÖ®¼äµÄ²îÒì¡£

HSVºÍHLSÓÐһЩ²»Í¬¡£ÕýÈçÔÚÉÏͼ¿´µ½µÄÄÇÑù£¬ËûÃÇÓÐÒ»¸öÈýάµÄ±í´ï£¬¸üÀàËÆÓÚÈËÀàµÄ¸ÐÖª·½Ê½¡£HSV´ú±íÉ«µ÷¡¢±¥ºÍ¶ÈºÍɫֵ¡£HSL´ú±íÉ«µ÷¡¢±¥ºÍ¶ÈºÍÁÁ¶È¡£HSVµÄÖÐÖáÊÇɫֵ£¬HSLµÄÖÐÖáÊǹâÁ¿¡£ÑØ×ÅÖÐÐÄÖáµÄ½Ç¶È£¬ÓÐÉ«µ÷ºÍʵ¼ÊµÄÑÕÉ«¡£ÓëÖÐÐÄÖáµÄ¾àÀëÊôÓÚ±¥ºÍ¶È¡£×ª»»ÑÕɫģÐ͵ķ½·¨ÈçÏ¡£

# Transform the image into HSV and HLS models
img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
img_hls = cv2.cvtColor(img, cv2.COLOR_BGR2HLS)
# Plot the converted images
fig, (ax1, ax2) = plt.subplots(nrows = 1, ncols =2, figsize = (20, 20))
ax1.imshow(img_hsv)
ax2.imshow(img_hls)
plt.show()

µ«ÊÇΪʲôҪ±ä»»ÑÕÉ«£¿ÕâЩÓÐʲôÓô¦£¿Ò»¸öºÜµäÐ͵ÄÀý×Ó--³µµÀ¼ì²â¡£¹Û²ìÏÂͼ£¬²»Í¬ÑÕɫģʽϵijµµÀÏß¡£ÔÚ¼ÆËã»úÊÓ¾õÈÎÎñÖУ¬ÎÒÃÇÀûÓÃÑÚĤ£¨masking£©½øÐжàɫģʽת»»¡£Èç¹ûÄãÏëÁ˽â¸ü¶à¹ØÓÚͼÏñ´¦ÀíÔÚ³µµÀ¼ì²âÈÎÎñÖеÄÓ¦Ó㬿ɲο´ÕâÆªÎÄÕ¡£

ͼÏñ´¦ÀíÊǾÍÊǶÔͼÏñÊý¾Ý½øÐÐÔ¤´¦Àí¡£Ëü¿ÉÒÔ¼õÉÙÔëÒô£¬ÌáÈ¡ÓÐÓõÄÑÕɫģÐÍ£¬´Ó¶ø¼ò»¯·ÖÀàºÍ¼ì²âÈÎÎñ¡£Òò´Ë£¬ËùÓÐÉÏÊö¼¼Êõ£¬°üÀ¨ÎÒÃÇÉÔºó½«ÌÖÂ۵ļ¼Êõ£¬¶¼ÊÇΪÁ˰ïÖúÄ£Ð͸üÈÝÒ×µØÊµÏÖ¼ì²â¡£

Èý¡¢ÔÚͼÏñÉÏ»æÖÆÍ¼ÐÎ

ÈÃÎÒÃÇÔÚͼÏñÉÏÌí¼ÓһЩͼÐΡ£ÔÛÃÇÕâ´Î´úÂëʾÀýÖÐʹÓõÄͼƬÀ´×Ô°ÍÀè¡°°®µÄǽ¡±¡£ÉÏÃæÓø÷ÖÖ¹ú¼ÊÓïÑÔдÂúÁË¡°ÎÒ°®Ä㡱¡£ÎÒÃÇÒª×öµÄÊÇÕÒµ½ÓïÑÔÖеĵ¥´Ê²¢ÓþØÐαê¼ÇËüÃÇ¡£¼ÙÈçÎÒÃÇÒª¶¨Î»º«Óï°æ±¾¡°ÎÒ°®Ä㡱¡£Ê×ÏÈ£¬¸´ÖÆÔ­Ê¼Í¼Ïñ²¢ÓÃcv2.rectangle()º¯Êý»æÖÆÒ»¸ö¾ØÐΣ¬Í¬Ê±¸ø³ö×óÉϽǺÍÓÒϽǵÄ×ø±êÖµ¡£ÈçÏ£º

# Copy the image
img_copy = img.copy()
# Draw a rectangle
cv2.rectangle(img_copy, pt1 = (800, 470), pt2 =(980, 530),
color = (255, 0, 0), thickness = 5)
plt.imshow(img_copy)

ʹÓÃcv2.circle()º¯Êý£¬»­Ò»¸öÔ²£¬È¦³ö¸ü¶àµÄº«Óïµ¥´Ê¡£ÎÒÃÇÐèÒªÖ¸¶¨ËüµÄÔ²ÐĵĵãºÍ°ë¾¶µÄ³¤¶È¡£

# Draw a circle
cv2.circle(img_copy, center = (950, 50), radius =50,
color = (0, 0, 255), thickness = 5)
plt.imshow(img_copy)£¬

ÎÒÃÇ»¹¿ÉÒÔ½«Îı¾Êý¾Ý·ÅÔÚͼÏñÉÏ¡£Ê¹ÓÃcv2.putText()º¯Êý£¬ÎÒÃÇ¿ÉÒÔÖ¸¶¨Îı¾µÄλÖá¢×ÖÌåÑùʽºÍ´óС¡£

# Add text
cv2.putText(img_copy, text = "the Wall ofLove",
org = (250, 250),
fontFace = cv2.FONT_HERSHEY_DUPLEX,
fontScale = 2,
color = (0, 255, 0),
thickness = 2,
lineType = cv2.LINE_AA)
plt.imshow(img_copy)

ËÄ¡¢²»Ö¹ÊÇͼÏñ

ÔÚÉϱߵĽéÉÜÖУ¬ÎÒÃÇѡȡÒâ´óÀûºÍ·¨¹úµÄÁ½Õŷ羰ͼ×÷ΪʾÀý¡£¼ÙÈ磬ÎÒÃÇÏëÒª»­ÕŵØÍ¼°ÑÕâЩµØ·½±ê³öÀ´¡£ÄÇô£¬Ê×ÏÈÎÒÃÇÒª´´½¨Ò»¸ö´°¿Ú²¢»æÖÆÍ¼ÐΡ£²»Ò»ÑùµÄÊÇÕâÀï²»ÊÇͨ¹ýÖ¸¶¨µã»æÖÆÍ¼ÐζøÊÇͨ¹ýµã»÷ÏìÓ¦¡£ÏÈÊÔÊÔ»æÖÆÔ²È¦¡£Ê×ÏÈ´´½¨Ò»¸öº¯Êý£¬Ëü½«ÓÃλÖúÍÊó±êµã»÷µÄÊý¾Ý»æÖÆÒ»¸öԲȦ¡£

# Step 1. Define callback function
def draw_circle(event, x, y, flags, param):
ifevent == cv2.EVENT_LBUTTONDOWN:
cv2.circle(img, center = (x, y), radius = 5,
color = (87, 184, 237), thickness = -1)
elifevent == cv2.EVENT_RBUTTONDOWN:
cv2.circle(img, center = (x, y), radius = 10,
color = (87, 184, 237),thickness = 1)

µ±°´ÏÂÊó±êµã»÷°´Å¥Ê±£¬Ê¹ÓÃcv2.EVENT_LBUTTONDOWN»ò

cv2.EVENT_RBUTTONDOWN¼Ç¼λÖÃÊý¾Ý¡£°ÑÊó±êµÄλÖÃÉèÖÃΪԲÐÄ(x, y)£¬²¢»æÖÆÔ²È¦¡£

# Step 2. Call the window
img = cv2.imread('map.png')
cv2.namedWindow(winname = 'my_drawing')
cv2.setMouseCallback('my_drawing', draw_circle)

ÉèÖÃÒ»¸öµØÍ¼×÷Ϊ´°¿ÚµÄ±³¾°£¬²¢½«´°¿ÚÃüÃûΪmy_drawing¡£Ê¹ÓÃcv2.setMouseCallback()º¯Êý£¬ÔÚ´°¿ÚºÍÎÒÃÇÔÚ²½Öè1Öд´½¨µÄº¯Êýdraw_circleÖ®¼ä½¨Á¢ÁËÒ»¸öÁ¬½Ó¡£

# Step 3. Execution
while True:
cv2.imshow('my_drawing',img)
ifcv2.waitKey(10) & 0xFF == 27:
break
cv2.destroyAllWindows()

ÏÖÔÚÎÒÃÇʹÓÃwhileÑ­»·Ö´Ðд°¿Ú¡£if×Ó¾äµÄÖ´ÐÐÌõ¼þÊÇ£¬µ±ÎÒÃǰ´Ï¼üÅÌÉϵÄESCʱ£¬½«´°¿ÚÉèÖÃΪ¹Ø±Õ¡£

½ÓÏÂÀ´³¢ÊÔ»æÖÆÒ»¸ö¾ØÐΡ£ÓÉÓÚÔÚcv2.rectangle()º¯ÊýÖУ¬¾ØÐÎÐèÒªÁ½¸öµãÀ´±íʾpt1ºÍpt2£¬ËùÒÔÎÒÃÇÐèÒªÒ»¸ö¶îÍâµÄ²½ÖèÀ´ÉèÖõÚÒ»¸öµã»÷µãΪpt1£¬×îºóÒ»¸öµã»÷µãΪpt2¡£ÎÒÃÇÒªÓÃcv2.EVENT_MOUSEMOVEºÍcv2.EVENT_LBUTTONUPÀ´¼ì²âÊó±êµÄÒÆ¶¯¡£

ÎÒÃÇÊ×ÏȽ«drawing = False¶¨ÒåΪĬÈÏÖµ¡£µ±°´ÏÂ×ó¼üʱ£¬»æÍ¼±äΪtrue£¬ÎÒÃǽ«µÚÒ»¸öλÖÃÉèΪpt1¡£Èç¹ûÕýÔÚ»æÍ¼£¬Ëü½«ÒÔµ±Ç°µãΪpt2£¬²¢ÔÚÒÆ¶¯Êó±êʱ¼ÌÐø»æÖƾØÐΡ£¾ÍÏñÊý×ÖÖØµþÒ»Ñù¡£µ±×ó¼ü´ò¿ªÊ±£¬»æÍ¼±äΪfalse£¬Ëü½«Êó±êµÄ×îºóÒ»¸öλÖÃ×÷Ϊpt2µÄ×îºóÒ»¸öµã¡£

# Initialization
drawing = False
ix = -1
iy = -1
# create a drawing function
def draw_rectangle(event, x, y, flags, params):
globalix, iy, drawing
ifevent == cv2.EVENT_LBUTTONDOWN:
drawing = True
ix,iy = x, y

elifevent == cv2.EVENT_MOUSEMOVE:
ifdrawing == True:
cv2.rectangle(img, pt1=(ix, iy), pt2=(x, y),
color = (87, 184,237), thickness = -1)
elifevent == cv2.EVENT_LBUTTONUP:
drawing = False
cv2.rectangle(img, pt1=(ix, iy), pt2=(x, y),
color = (87, 184, 237),thickness = -1)

ÔÚ²½Öè1Öн«draw_circleº¯ÊýÌæ»»Îªdraw_rectangle¡£Çë²»ÒªÍü¼ÇÔڻص÷º¯Êýcv2.setMouseCallback()ÖнøÐиü¸Ä¡£Òò´Ë£¬Õû¸ö´úÂë½Å±¾½«ÈçÏÂËùʾ¡£

import cv2
import numpy as np
# Step 1. Define callback function
drawing = False
ix = -1
iy = -1

def draw_rectangle(event, x, y, flags, params):

globalix, iy, drawing
ifevent == cv2.EVENT_LBUTTONDOWN:
drawing = True
ix,iy = x, y

elifevent == cv2.EVENT_MOUSEMOVE:
ifdrawing == True:
cv2.rectangle(img, pt1 = (ix, iy), pt2 = (x, y),
color = (87, 184,237), thickness = -1)
elifevent == cv2.EVENT_LBUTTONUP:
drawing = False
cv2.rectangle(img, pt1 = (ix, iy), pt2 = (x, y),
color = (87, 184, 237),thickness = -1)

# Step 2. Call the window
img = cv2.imread('map.png')
cv2.namedWindow(winname = 'my_drawing')
cv2.setMouseCallback('my_drawing',draw_rectangle)
# Step 3. Execution
while True:
cv2.imshow('my_drawing', img)
ifcv2.waitKey(10) & 0xFF == 27:
break
cv2.destroyAllWindows()

Îå¡¢×ܽáÓëÕ¹Íû

±¾ÆªÎÄÕ½éÉÜÁËOpencvµÄ°²×°¡¢Í¼ÏñÑÕɫģÐ͵Äת»»ÓëͼÐλæÖÆ¡£Ï´Σ¬½«½éÉÜͼÏñÂÖÀªÌá³öÓëÄ¿±ê¼ì²âµÈ¼¼Êõ¡£¾´ÇëÆÚ´ý£¡

   
2715 ´Îä¯ÀÀ       28
Ïà¹ØÎÄÕÂ

»ùÓÚͼ¾í»ýÍøÂçµÄͼÉî¶Èѧϰ
×Ô¶¯¼ÝÊ»ÖеÄ3DÄ¿±ê¼ì²â
¹¤Òµ»úÆ÷ÈË¿ØÖÆÏµÍ³¼Ü¹¹½éÉÜ
ÏîĿʵս£ºÈçºÎ¹¹½¨ÖªÊ¶Í¼Æ×
 
Ïà¹ØÎĵµ

5GÈ˹¤ÖÇÄÜÎïÁªÍøµÄµäÐÍÓ¦ÓÃ
Éî¶ÈѧϰÔÚ×Ô¶¯¼ÝÊ»ÖеÄÓ¦ÓÃ
ͼÉñ¾­ÍøÂçÔÚ½»²æÑ§¿ÆÁìÓòµÄÓ¦ÓÃÑо¿
ÎÞÈË»úϵͳԭÀí
Ïà¹Ø¿Î³Ì

È˹¤ÖÇÄÜ¡¢»úÆ÷ѧϰ&TensorFlow
»úÆ÷ÈËÈí¼þ¿ª·¢¼¼Êõ
È˹¤ÖÇÄÜ£¬»úÆ÷ѧϰºÍÉî¶Èѧϰ
ͼÏñ´¦ÀíËã·¨·½·¨Óëʵ¼ù
×îл¼Æ»®
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢ 6-12[ÏÃÃÅ]
È˹¤ÖÇÄÜ.»úÆ÷ѧϰTensorFlow 6-22[Ö±²¥]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 6-30[±±¾©]
ǶÈëʽÈí¼þ¼Ü¹¹-¸ß¼¶Êµ¼ù 7-9[±±¾©]
Óû§ÌåÑé¡¢Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À 7-25[Î÷°²]
ͼÊý¾Ý¿âÓë֪ʶͼÆ× 8-23[±±¾©]
 
×îÐÂÎÄÕÂ
¶àÄ¿±ê¸ú×Ù£ºAI²úÆ·¾­ÀíÐèÒªÁ˽âµÄCVͨʶ
Éî¶Èѧϰ¼Ü¹¹
¾í»ýÉñ¾­ÍøÂç֮ǰÏò´«²¥Ëã·¨
´Ó0µ½1´î½¨AIÖÐ̨
¹¤Òµ»úÆ÷ÈË¿ØÖÆÏµÍ³¼Ü¹¹½éÉÜ
×îпγÌ
È˹¤ÖÇÄÜ£¬»úÆ÷ѧϰºÍÉî¶Èѧϰ
È˹¤ÖÇÄÜÓë»úÆ÷ѧϰӦÓÃʵս
È˹¤ÖÇÄÜ-ͼÏñ´¦ÀíºÍʶ±ð
È˹¤ÖÇÄÜ¡¢»úÆ÷ѧϰ& TensorFlow+Keras¿ò¼Üʵ¼ù
È˹¤ÖÇÄÜ+Python£«´óÊý¾Ý
³É¹¦°¸Àý
ij×ÛºÏÐÔ¿ÆÑлú¹¹ È˹¤ÖÇÄÜÓë»úÆ÷ѧϰӦÓÃ
Ä³ÒøÐÐ È˹¤ÖÇÄÜ+Python+´óÊý¾Ý
±±¾© È˹¤ÖÇÄÜ¡¢»úÆ÷ѧϰ& TensorFlow¿ò¼Üʵ¼ù
ijÁìÏÈÊý×ÖµØÍ¼ÌṩÉÌ PythonÊý¾Ý·ÖÎöÓë»úÆ÷ѧϰ
ÖйúÒÆ¶¯ È˹¤ÖÇÄÜ¡¢»úÆ÷ѧϰºÍÉî¶Èѧϰ