Skip to content

Commit 6c34926

Browse files
author
lilang
committed
ai1.4补充
1 parent 5dc05df commit 6c34926

File tree

7 files changed

+276
-9
lines changed

7 files changed

+276
-9
lines changed

ci.go

Lines changed: 120 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1266,10 +1266,10 @@ func (s *CIService) GetQRcode(ctx context.Context, name string, cover int, opt *
12661266
}
12671267

12681268
type GetQRcodeResultV2 struct {
1269-
XMLName xml.Name `xml:"Response"`
1270-
CodeStatus int `xml:"CodeStatus,omitempty"`
1269+
XMLName xml.Name `xml:"Response"`
1270+
CodeStatus int `xml:"CodeStatus,omitempty"`
12711271
QRcodeInfo []QRcodeInfo `xml:"QRcodeInfo,omitempty"`
1272-
ResultImage string `xml:"ResultImage,omitempty"`
1272+
ResultImage string `xml:"ResultImage,omitempty"`
12731273
}
12741274

12751275
// 二维码识别-下载时识别 https://cloud.tencent.com/document/product/436/54070
@@ -1831,6 +1831,37 @@ func (s *CIService) EffectPet(ctx context.Context, obj string) (*PetEffectResult
18311831
return &res, resp, err
18321832
}
18331833

1834+
type PetDetectOption struct {
1835+
DetectUrl string `url:"detect-url,omitempty"`
1836+
}
1837+
1838+
type PetDetectResult struct {
1839+
XMLName xml.Name `xml:"Response"`
1840+
ResultInfo []struct {
1841+
Score int `xml:"Score,omitempty"`
1842+
Name string `xml:"Name,omitempty"`
1843+
Location struct {
1844+
X int `xml:"X,omitempty"`
1845+
Y int `xml:"Y,omitempty"`
1846+
Height int `xml:"Height,omitempty"`
1847+
Width int `xml:"Width,omitempty"`
1848+
} `xml:"Location,omitempty"`
1849+
} `xml:"ResultInfo,omitempty"`
1850+
}
1851+
1852+
func (s *CIService) DetectPet(ctx context.Context, obj string, opt *PetDetectOption) (*PetDetectResult, *Response, error) {
1853+
var res PetDetectResult
1854+
sendOpt := &sendOptions{
1855+
baseURL: s.client.BaseURL.BucketURL,
1856+
method: http.MethodGet,
1857+
uri: "/" + encodeURIComponent(obj) + "?ci-process=detect-pet",
1858+
result: &res,
1859+
optQuery: opt,
1860+
}
1861+
resp, err := s.client.send(ctx, sendOpt)
1862+
return &res, resp, err
1863+
}
1864+
18341865
type AILicenseRecOptions struct {
18351866
DetectUrl string `url:"detect-url,omitempty"`
18361867
CardType string `url:"CardType,omitempty"`
@@ -2296,6 +2327,23 @@ func (s *CIService) GetAIImageColoring(ctx context.Context, name string) (*Respo
22962327
return resp, err
22972328
}
22982329

2330+
// AIImageColoringOptions TODO
2331+
type AIImageColoringOptions struct {
2332+
DetectUrl string `url:"detect-url,omitempty"`
2333+
}
2334+
2335+
func (s *CIService) GetAIImageColoringV2(ctx context.Context, name string, opt *AIImageColoringOptions) (*Response, error) {
2336+
sendOpt := sendOptions{
2337+
baseURL: s.client.BaseURL.BucketURL,
2338+
uri: "/" + encodeURIComponent(name) + "?ci-process=AIImageColoring",
2339+
method: http.MethodGet,
2340+
optQuery: opt,
2341+
disableCloseBody: true,
2342+
}
2343+
resp, err := s.client.send(ctx, &sendOpt)
2344+
return resp, err
2345+
}
2346+
22992347
// GetAISuperResolution https://cloud.tencent.com/document/product/460/83793
23002348
func (s *CIService) GetAISuperResolution(ctx context.Context, name string) (*Response, error) {
23012349
sendOpt := sendOptions{
@@ -2308,6 +2356,24 @@ func (s *CIService) GetAISuperResolution(ctx context.Context, name string) (*Res
23082356
return resp, err
23092357
}
23102358

2359+
// AIImageColoringOptions TODO
2360+
type AISuperResolutionOptions struct {
2361+
DetectUrl string `url:"detect-url,omitempty"`
2362+
}
2363+
2364+
// GetAISuperResolution https://cloud.tencent.com/document/product/460/83793
2365+
func (s *CIService) GetAISuperResolutionV2(ctx context.Context, name string, opt *AISuperResolutionOptions) (*Response, error) {
2366+
sendOpt := sendOptions{
2367+
baseURL: s.client.BaseURL.BucketURL,
2368+
uri: "/" + encodeURIComponent(name) + "?ci-process=AISuperResolution",
2369+
method: http.MethodGet,
2370+
optQuery: opt,
2371+
disableCloseBody: true,
2372+
}
2373+
resp, err := s.client.send(ctx, &sendOpt)
2374+
return resp, err
2375+
}
2376+
23112377
// GetAIEnhanceImage https://cloud.tencent.com/document/product/460/83792
23122378
func (s *CIService) GetAIEnhanceImage(ctx context.Context, name string) (*Response, error) {
23132379
sendOpt := sendOptions{
@@ -2320,6 +2386,27 @@ func (s *CIService) GetAIEnhanceImage(ctx context.Context, name string) (*Respon
23202386
return resp, err
23212387
}
23222388

2389+
// AIEnhanceImageOptions 图像增强选项
2390+
type AIEnhanceImageOptions struct {
2391+
DetectUrl string `url:"detect-url,omitempty"`
2392+
Senoise int `url:"denoise,omitempty"`
2393+
Sharpen int `url:"sharpen,omitempty"`
2394+
IgnoreError int `url:"ignore-error,omitempty"`
2395+
}
2396+
2397+
// GetAIEnhanceImage https://cloud.tencent.com/document/product/460/83792
2398+
func (s *CIService) GetAIEnhanceImageV2(ctx context.Context, name string, opt *AIEnhanceImageOptions) (*Response, error) {
2399+
sendOpt := sendOptions{
2400+
baseURL: s.client.BaseURL.BucketURL,
2401+
uri: "/" + encodeURIComponent(name) + "?ci-process=AIEnhanceImage",
2402+
method: http.MethodGet,
2403+
optQuery: opt,
2404+
disableCloseBody: true,
2405+
}
2406+
resp, err := s.client.send(ctx, &sendOpt)
2407+
return resp, err
2408+
}
2409+
23232410
// AIImageCropOptions 图像智能裁剪选项
23242411
type AIImageCropOptions struct {
23252412
DetectUrl string `url:"detect-url,omitempty"`
@@ -2374,8 +2461,9 @@ func (s *CIService) GetAutoTranslationBlock(ctx context.Context, opt *AutoTransl
23742461

23752462
// ImageRepairOptions 图像修复选项
23762463
type ImageRepairOptions struct {
2377-
MaskPic string `url:"MaskPic,omitempty"`
2378-
MaskPoly string `url:"MaskPoly,omitempty"`
2464+
DetectUrl string `url:"detect-url,omitempty"`
2465+
MaskPic string `url:"MaskPic,omitempty"`
2466+
MaskPoly string `url:"MaskPoly,omitempty"`
23792467
}
23802468

23812469
// GetImageRepair https://cloud.tencent.com/document/product/460/79042
@@ -2462,3 +2550,30 @@ func (s *CIService) TDCRefresh(ctx context.Context, name string) (*Response, err
24622550
resp, err := s.client.send(ctx, &sendOpt)
24632551
return resp, err
24642552
}
2553+
2554+
type AIGameRecOptions struct {
2555+
DetectUrl string `url:"detect-url,omitempty"`
2556+
}
2557+
2558+
type AIGameRecResult struct {
2559+
XMLName xml.Name `xml:"RecognitionResult"`
2560+
GameLabels *struct {
2561+
Confidence int `xml:"Confidence,omitempty"`
2562+
FirstCategory string `xml:"FirstCategory,omitempty"`
2563+
SecondCategory string `xml:"SecondCategory,omitempty"`
2564+
GameName string `xml:"GameName,omitempty"`
2565+
} `xml:"GameLabels,omitempty"`
2566+
}
2567+
2568+
func (s *CIService) AIGameRec(ctx context.Context, obj string, opt *AIGameRecOptions) (*AIGameRecResult, *Response, error) {
2569+
var res AIGameRecResult
2570+
sendOpt := &sendOptions{
2571+
baseURL: s.client.BaseURL.BucketURL,
2572+
method: http.MethodGet,
2573+
uri: "/" + encodeURIComponent(obj) + "?ci-process=AIGameRec",
2574+
optQuery: opt,
2575+
result: &res,
2576+
}
2577+
resp, err := s.client.send(ctx, sendOpt)
2578+
return &res, resp, err
2579+
}

ci_test.go

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2124,6 +2124,24 @@ func TestCIService_EffectPet(t *testing.T) {
21242124
}
21252125
}
21262126

2127+
func TestCIService_DetectPet(t *testing.T) {
2128+
setup()
2129+
defer teardown()
2130+
2131+
mux.HandleFunc("/test.jpg", func(w http.ResponseWriter, r *http.Request) {
2132+
testMethod(t, r, http.MethodGet)
2133+
v := values{
2134+
"ci-process": "detect-pet",
2135+
}
2136+
testFormValues(t, r, v)
2137+
})
2138+
opt := &PetDetectOption{}
2139+
_, _, err := client.CI.DetectPet(context.Background(), "test.jpg", opt)
2140+
if err != nil {
2141+
t.Fatalf("CI.DetectPet returned error: %v", err)
2142+
}
2143+
}
2144+
21272145
func TestCIService_AILicenseRec(t *testing.T) {
21282146
setup()
21292147
defer teardown()
@@ -2632,6 +2650,25 @@ func TestCIService_GetAIImageColoring(t *testing.T) {
26322650
}
26332651
}
26342652

2653+
func TestCIService_GetAIImageColoringV2(t *testing.T) {
2654+
setup()
2655+
defer teardown()
2656+
2657+
key := "pic/cup.jpeg"
2658+
mux.HandleFunc("/"+key, func(w http.ResponseWriter, r *http.Request) {
2659+
testMethod(t, r, http.MethodGet)
2660+
v := values{
2661+
"ci-process": "AIImageColoring",
2662+
}
2663+
testFormValues(t, r, v)
2664+
})
2665+
opt := &AIImageColoringOptions{}
2666+
_, err := client.CI.GetAIImageColoringV2(context.Background(), key, opt)
2667+
if err != nil {
2668+
t.Fatalf("CI.GetAIImageColoringV2 returned error: %v", err)
2669+
}
2670+
}
2671+
26352672
func TestCIService_GetAISuperResolution(t *testing.T) {
26362673
setup()
26372674
defer teardown()
@@ -2651,6 +2688,25 @@ func TestCIService_GetAISuperResolution(t *testing.T) {
26512688
}
26522689
}
26532690

2691+
func TestCIService_GetAISuperResolutionV2(t *testing.T) {
2692+
setup()
2693+
defer teardown()
2694+
2695+
key := "pic/cup.jpeg"
2696+
mux.HandleFunc("/"+key, func(w http.ResponseWriter, r *http.Request) {
2697+
testMethod(t, r, http.MethodGet)
2698+
v := values{
2699+
"ci-process": "AISuperResolution",
2700+
}
2701+
testFormValues(t, r, v)
2702+
})
2703+
opt := &AISuperResolutionOptions{}
2704+
_, err := client.CI.GetAISuperResolutionV2(context.Background(), key, opt)
2705+
if err != nil {
2706+
t.Fatalf("CI.GetAISuperResolutionV2 returned error: %v", err)
2707+
}
2708+
}
2709+
26542710
func TestCIService_GetAIEnhanceImage(t *testing.T) {
26552711
setup()
26562712
defer teardown()
@@ -2670,6 +2726,25 @@ func TestCIService_GetAIEnhanceImage(t *testing.T) {
26702726
}
26712727
}
26722728

2729+
func TestCIService_GetAIEnhanceImageV2(t *testing.T) {
2730+
setup()
2731+
defer teardown()
2732+
2733+
key := "pic/cup.jpeg"
2734+
mux.HandleFunc("/"+key, func(w http.ResponseWriter, r *http.Request) {
2735+
testMethod(t, r, http.MethodGet)
2736+
v := values{
2737+
"ci-process": "AIEnhanceImage",
2738+
}
2739+
testFormValues(t, r, v)
2740+
})
2741+
opt := &AIEnhanceImageOptions{}
2742+
_, err := client.CI.GetAIEnhanceImageV2(context.Background(), key, opt)
2743+
if err != nil {
2744+
t.Fatalf("CI.GetAIEnhanceImageV2 returned error: %v", err)
2745+
}
2746+
}
2747+
26732748
func TestCIService_GetAIImageCrop(t *testing.T) {
26742749
setup()
26752750
defer teardown()
@@ -2812,3 +2887,22 @@ func TestCIService_TDCRefresh(t *testing.T) {
28122887
t.Fatalf("CI.TDCRefresh returned error: %v", err)
28132888
}
28142889
}
2890+
2891+
func TestCIService_AIGameRec(t *testing.T) {
2892+
setup()
2893+
defer teardown()
2894+
2895+
mux.HandleFunc("/test.jpg", func(w http.ResponseWriter, r *http.Request) {
2896+
testMethod(t, r, http.MethodGet)
2897+
v := values{
2898+
"ci-process": "AIGameRec",
2899+
}
2900+
testFormValues(t, r, v)
2901+
})
2902+
opt := &AIGameRecOptions{}
2903+
2904+
_, _, err := client.CI.AIGameRec(context.Background(), "test.jpg", opt)
2905+
if err != nil {
2906+
t.Fatalf("CI.AIGameRec returned error: %v", err)
2907+
}
2908+
}

example/CI/ai_recognition/ai_enhance_image.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ func enhanceImageWhenDownload() {
5050
})
5151
obj := "pic/heibai.jpeg"
5252
localPath := "test.jpeg"
53-
resp, err := c.CI.GetAIEnhanceImage(context.Background(), obj)
53+
opt := &cos.AIEnhanceImageOptions{}
54+
resp, err := c.CI.GetAIEnhanceImageV2(context.Background(), obj, opt)
5455
log_status(err)
5556
if err == nil {
5657
fd, _ := os.OpenFile(localPath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0660)
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package main
2+
3+
import (
4+
"context"
5+
"fmt"
6+
"net/http"
7+
"net/url"
8+
"os"
9+
10+
"github.com/tencentyun/cos-go-sdk-v5"
11+
"github.com/tencentyun/cos-go-sdk-v5/debug"
12+
)
13+
14+
func log_status(err error) {
15+
if err == nil {
16+
return
17+
}
18+
if cos.IsNotFoundError(err) {
19+
// WARN
20+
fmt.Println("WARN: Resource is not existed")
21+
} else if e, ok := cos.IsCOSError(err); ok {
22+
fmt.Printf("ERROR: Code: %v\n", e.Code)
23+
fmt.Printf("ERROR: Message: %v\n", e.Message)
24+
fmt.Printf("ERROR: Resource: %v\n", e.Resource)
25+
fmt.Printf("ERROR: RequestId: %v\n", e.RequestID)
26+
// ERROR
27+
} else {
28+
fmt.Printf("ERROR: %v\n", err)
29+
// ERROR
30+
}
31+
}
32+
33+
func main() {
34+
u, _ := url.Parse("https://test-1234567890.cos.ap-chongqing.myqcloud.com")
35+
b := &cos.BaseURL{BucketURL: u}
36+
c := cos.NewClient(b, &http.Client{
37+
Transport: &cos.AuthorizationTransport{
38+
SecretID: os.Getenv("COS_SECRETID"),
39+
SecretKey: os.Getenv("COS_SECRETKEY"),
40+
Transport: &debug.DebugRequestTransport{
41+
RequestHeader: true,
42+
// Notice when put a large file and set need the request body, might happend out of memory error.
43+
RequestBody: false,
44+
ResponseHeader: true,
45+
ResponseBody: true,
46+
},
47+
},
48+
})
49+
obj := "pic/game2.jpeg"
50+
opt := &cos.AIGameRecOptions{}
51+
res, _, err := c.CI.AIGameRec(context.Background(), obj, opt)
52+
log_status(err)
53+
fmt.Printf("%+v\n", res)
54+
}

example/CI/ai_recognition/ai_image_coloring.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ func imageColoringWhenDownload() {
5050
})
5151
obj := "pic/heibai.jpeg"
5252
localPath := "test.jpeg"
53-
resp, err := c.CI.GetAIImageColoring(context.Background(), obj)
53+
opt := &cos.AIImageColoringOptions{}
54+
resp, err := c.CI.GetAIImageColoringV2(context.Background(), obj, opt)
5455
log_status(err)
5556
if err == nil {
5657
fd, _ := os.OpenFile(localPath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0660)

example/CI/ai_recognition/ai_super_resolution.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ func superResolutionWhenDownload() {
5050
})
5151
obj := "pic/heibai.jpeg"
5252
localPath := "test.jpeg"
53-
resp, err := c.CI.GetAISuperResolution(context.Background(), obj)
53+
opt := &cos.AISuperResolutionOptions{}
54+
resp, err := c.CI.GetAISuperResolutionV2(context.Background(), obj, opt)
5455
log_status(err)
5556
if err == nil {
5657
fd, _ := os.OpenFile(localPath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0660)

example/CI/ai_recognition/detect_pet.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ func main() {
4747
},
4848
})
4949
obj := "pic/pet.jpeg"
50-
res, _, err := c.CI.EffectPet(context.Background(), obj)
50+
opt := &cos.PetDetectOption{}
51+
res, _, err := c.CI.DetectPet(context.Background(), obj, opt)
5152
log_status(err)
5253
fmt.Printf("%+v\n", res)
5354
}

0 commit comments

Comments
 (0)